如果我有这样的文件:
package main
import "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
定义的属性。
最佳答案
这里的问题不是编译器不知道类型,而是复合文字的语法需要类型:
https://golang.org/ref/spec#Composite_literals
字符串数组文字是[]string{"a","b",","c"}
,而不是{"a","b","c"}
。
关于go - 带 slice 结构的隐式类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64091523/