【问题标题】:How do I define a slice of slices containing an int and a slice of strings in Go?如何在 Go 中定义包含 int 和字符串切片的切片切片?
【发布时间】:2015-05-21 17:32:45
【问题描述】:

看起来像这样:

[[1,["a", "b", "c"]], [2,["z", "x", "y"]]]

直觉上我会做类似 [][]int[]string 之类的事情,但这是无效的:syntax error: unexpected [, expecting semicolon or newline or },那我该怎么做呢?

【问题讨论】:

标签: arrays multidimensional-array go slice


【解决方案1】:

T片:var x []T

T的切片:var x [][]T

T1 和 T2 的切片:您需要将 T1 和 T2 放入一个结构中。

所以对于:切片(包含 { int 和字符串切片的切片 } )。 它通常是这样的:

type foo struct {
    i int
    s []string
}
var x [][]foo

但是你的例子看起来更像是一个[]foo:

bar := []foo{
    {1, []string{"a", "b", "c"}},
    {2, []string{"z", "x", "y"}},
}
fmt.Println("bar:", bar)
// bar: [{1 [a b c]} {2 [z x y]}]

Run on Playground(还包括更多示例)

【讨论】:

  • 注意,您可以执行var x [][]struct{x, y int} 之类的操作,但通常只定义如图所示的结构类型会更简单。
猜你喜欢
  • 2017-02-19
  • 2020-11-27
  • 1970-01-01
  • 2012-11-10
  • 2019-01-29
  • 2016-10-27
  • 2019-12-22
  • 2015-05-15
  • 1970-01-01
相关资源
最近更新 更多