将新行追加到多维切片

时间:2017-09-04 13:13:46

标签: arrays go multidimensional-array

我有一个创建2d切片,1行和3列的函数

func threeSum(nums []int) [][]int {
    result := make([][]int, 1)
    result[0] = []int{1, 2, 3}
    return result
}

如果我想动态添加行怎么办?

如果result只是一个普通的切片,我只会附加到切片的末尾,但是对于2d数组,似乎我必须手动执行很多操作,是否有更简单的方法?

编辑:如果我需要添加一个新行,我的方法就是:

result = append(result, []int{4, 2, 3})

事后看来并不是真的很糟糕:)如果有人有意见我会乐意接受。

1 个答案:

答案 0 :(得分:0)

你提出的方式确实是应该如何做的,当然这是最简单的方式......

有一种方法可以使用copy,但这需要您手动分配新切片,因此通常会慢得多,并且在每种情况下都需要更多代码。

如果您需要在现有的中添加新列,那么您需要分配一个新切片(或者,如果您当前的切片有未使用的空间,增加它的长度),将元素从旧切片复制到新切片(在两个操作中,以便新项目所需的插槽留空),最后直接添加新项目。在最紧凑的情况下,这需要至少3行代码,更多的是边界检查和可选的更高效率路径。