【问题标题】:Golang - Slices in nested structsGolang - 嵌套结构中的切片
【发布时间】:2014-03-25 06:24:57
【问题描述】:

我有一个深度嵌套的结构,其中包含两个切片,如下所示:

package main

import "fmt"

type bar struct {
    v1 []int
    v2 []int
}

type foo struct{ bar bar }
type tar struct{ foo foo }

func main() {
    f := &tar{foo: foo{bar: bar{v1: [2], v2: [3]}}}
    fmt.Printf("Hello, playground %s", f)
}

如何初始化这两个切片?或者我如何让这段代码工作?

这里是 Golang Play:http://play.golang.org/p/zLutROI4YH

【问题讨论】:

    标签: struct go slice


    【解决方案1】:

    []int{1,2,3} 表示法是可能的,例如(解决您的问题):

    &tar{foo: foo{bar: bar{v1: []int{2}, v2: []int{2}}}}
    

    附:我强烈建议您阅读The Go Programming Language SpecificationFAQ section

    【讨论】:

      【解决方案2】:

      v1v2 是切片。初始化它们的方式是使用make([]int, YOUR_INITIAL_SIZE) 而不是[2][3]

      【讨论】:

      • 这就是我的假设。我正要对其进行编辑并说如果您想使用已知值进行初始化,请查看@Kavu 的答案。
      • 如果你想初始化为空,你可能做错了。让他们为零。不过,上面的案例不是空的,而是一堆零。另一个答案中的文字示例可能是用户想要的。
      • 好点,@Dustin。因为他有 [2] 和 [3],我认为这就是他想要的。没有关于用例的更多信息,真的无法分辨。
      猜你喜欢
      • 2016-02-22
      • 2018-08-31
      • 2018-06-13
      • 2019-01-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-08
      • 2021-12-24
      相关资源
      最近更新 更多