Go,Golang:结构体内的数组类型,缺少类型复合字面量

24

我需要将切片类型添加到这个结构体中。

 type Example struct {
    text  []string
 }

 func main() {
    var arr = []Example {
        {{"a", "b", "c"}},
    }
    fmt.Println(arr)    
 }

那我就开始变得

  prog.go:11: missing type in composite literal
  [process exited with non-zero status]

因此,需要指定复合字面量

    var arr = []Example {
         {Example{"a", "b", "c"}},

但仍然收到这个错误:

    cannot use "a" (type string) as type []string in field value

http://play.golang.org/p/XKv1uhgUId

我应该如何修复这个问题?如何构建包含数组(切片)类型的结构体?

1个回答

52

这是你正确的Example结构体切片:

[]Example{
  Example{
   []string{"a", "b", "c"},
  },
}

让我解释一下。你想要创建一个 Example 的切片。所以这里是——[]Example{}。然后它必须用一个 Example 来填充——Example{}。而 Example 又由 []string 组成——[]string{"a", "b", "c"}。这只是正确语法的问题。


这个怎么样?它有更多的值,但由于另一个原因而无法工作。我想不出来。 - user2671513
2
如果您在文字表示法中不为字段命名,则必须为所有字段提供值,否则请为该字段命名。http://golang.org/ref/spec#Composite_literals。基于您的工作示例:http://play.golang.org/p/13OSJHd5xe - mna
6
请注意,您不需要第二个“Example” - Go聪明到足以自行判断[]Example中包含了哪些Example项,而无需显式命名它们。Playground - Nick Craig-Wood

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接