具有切片结构的隐式类型

如果我有这样的文件:


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定义知道每个属性的类型。


30秒到达战场
浏览 106回答 2
2回答

哔哔one

这里的问题不是编译器不知道类型,而是复合文字的语法需要类型:https://golang.org/ref/spec#Composite_literals字符串数组文字是[]string{"a","b",","c"},不是{"a","b","c"}。

慕村225694

您需要结构定义中的字段,如下所示o := Language{    Example: []string{".go", "go.ps1"},    Link:    []string{"golang.org", "go.dev"},}fmt.Println(o)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go