【问题标题】:How to set the length of an array during runtime如何在运行时设置数组的长度
【发布时间】:2021-05-19 21:02:30
【问题描述】:

我必须根据我在 Json 文件中找到的元素数量来设置二维数组的长度,不知道该怎么做。我已经有了一个方法来读取我的 Json 文件,但是我不确定在我完成读取后如何设置二维数组的长度。

【问题讨论】:

  • 您是否正在解组 JSON 文件?如果是这样,您不需要预先分配。
  • 数组是用静态大小定义的。你需要一个切片,如果你正在解组 json,那应该为你完成。

标签: arrays go data-structures


【解决方案1】:

json.Unmarshal 将根据需要分配切片。 Go 切片可能是可变大小数组的意思。这是一个简单的例子:

b := []byte(`[[1, 2, 3], [4, 5, 6]]`)
var slice2d [][]int
if err := json.Unmarshal(b, &slice2d); err != nil {
    log.Fatal(err)
}
fmt.Println("Unmarshaled", slice2d)

如果您正在阅读其他内容而不是直接阅读 2d 切片,那么您可能只是在寻找 make

这将分配一个 2D 切片,NxM:

twoD := make([][]int, N)
for i := 0; i < N; i++ {
  twoD[i] = make([]int, M)
}

// Now you can write into twoD[i][j], given i<N, j<M
// and no extra allocation will be incurred.

【讨论】:

  • 谢谢!这正是我所需要的。我真的很感激!
猜你喜欢
  • 2016-05-21
  • 1970-01-01
  • 2013-06-05
  • 1970-01-01
  • 1970-01-01
  • 2010-10-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多