【发布时间】:2014-11-24 23:59:07
【问题描述】:
我想在结构中创建数组数组的复合文字。在结构之外
package main
import "fmt"
func main() {
x := [...][]string {{"a", "b"}}
fmt.Printf("%s", x)
}
有效。 (http://play.golang.org/p/C2RbNnd7LL)
但我无法在结构中定义 [...][]string 类型的字段。如http://play.golang.org/p/wHNeeuAJuO
package main
import "fmt"
type t struct {
f [...][]string
}
func main() {
x := [...][]string {{"a", "b"}}
y := t{x}
fmt.Printf("%s", y)
}
f 给出了在数组字面量之外使用 [...] 数组的错误
【问题讨论】:
-
当然会报错! Go 中的数组具有编译时固定长度。出于礼貌,编译器将为您计算数组 literal 的元素;那是
...。没有文字,没有计数,没有...,只需说明数组大小或使用切片。看看blog.golang.org/slices。并且请:不要将切片称为数组,反之亦然(因为每次有人做一只小猫都会死)。这只是一个语法错误加上对 Go 的数组和切片的误解。你完成了围棋之旅? -
可能会在这里向您展示一些不可取的模式,但是一旦您确实使用切片,您就可以选择如何编写文字:play.golang.org/p/X1Pwsp0nK2
标签: go