如果我有这样的文件:package mainimport "fmt"type Language struct { Example []string Link []string}func main() { o := Language{ {".go", "go.ps1"}, {"golang.org", "go.dev"}, } fmt.Println(o)}我得到这个结果:missing type in composite literal我发现我可以这样解决:[]string{".go", "go.ps1"},[]string{"golang.org", "go.dev"},但这是严格要求的吗?我认为 Go 会根据struct定义知道每个属性的类型。
2 回答
哔哔one
TA贡献1854条经验 获得超8个赞
这里的问题不是编译器不知道类型,而是复合文字的语法需要类型:
https://golang.org/ref/spec#Composite_literals
字符串数组文字是[]string{"a","b",","c"}
,不是{"a","b","c"}
。
慕村225694
TA贡献1880条经验 获得超4个赞
您需要结构定义中的字段,如下所示
o := Language{
Example: []string{".go", "go.ps1"},
Link: []string{"golang.org", "go.dev"},
}
fmt.Println(o)
- 2 回答
- 0 关注
- 105 浏览
添加回答
举报
0/150
提交
取消