首页 > 解决方案 > 具有切片结构的隐式类型

问题描述

如果我有这样的文件:

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

标签: gostructtypesslice

解决方案


这里的问题不是编译器不知道类型,而是复合文字的语法需要类型:

https://golang.org/ref/spec#Composite_literals

字符串数组文字是[]string{"a","b",","c"},不是{"a","b","c"}


推荐阅读