Golang中无法将字符串类型作为[]string类型在字段值中使用
Golang中无法将字符串类型作为[]string类型在字段值中使用 大家好,
我正在尝试为一个嵌入了包含 []string 的结构体字段赋值,但一直没有成功。
https://play.golang.org/p/H3TFxcmAaAY
任何帮助都将不胜感激。
谢谢
5 回复
因为这就是你指定字面量切片的方式。
这方法有效。谢谢。但为什么它能工作呢?
我至少阅读了15篇JSON教程,但从未遇到过这种模式:[]string{"randomString"}。为什么使用大括号 {}?这表示什么?这是访问结构体中嵌入字段的方式吗?
干杯
在Go语言中,直接给 []string 类型的字段赋值字符串字面量是不允许的,因为类型不匹配。字符串字面量是 string 类型,而字段期望的是 []string 类型(字符串切片)。你需要将字符串转换为包含单个元素的字符串切片。
以下是修正后的代码示例:
package main
import (
"fmt"
)
type Person struct {
Name string
Hobbies []string
}
func main() {
p := Person{
Name: "John",
Hobbies: []string{"reading"}, // 使用 []string{"reading"} 而不是 "reading"
}
fmt.Println(p)
}
如果你需要从多个字符串字面量初始化切片,可以这样做:
p := Person{
Name: "John",
Hobbies: []string{"reading", "coding", "hiking"},
}
如果 Hobbies 字段可能为空,你可以直接赋值为 nil 或一个空的切片:
p := Person{
Name: "John",
Hobbies: nil, // 或 []string{}
}
这样就能正确地将字符串值赋值给 []string 类型的字段了。

