如果我有這樣的文件: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 關注
- 133 瀏覽
添加回答
舉報
0/150
提交
取消