我有一个创建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})
事后看来并不是真的很糟糕:)如果有人有意见我会乐意接受。
答案 0 :(得分:0)
你提出的方式确实是应该如何做的,当然这是最简单的方式......
有一种方法可以使用copy
,但这需要您手动分配新切片,因此通常会慢得多,并且在每种情况下都需要更多代码。
如果您需要在现有的中添加新列,那么您需要分配一个新切片(或者,如果您当前的切片有未使用的空间,增加它的长度),将元素从旧切片复制到新切片(在两个操作中,以便新项目所需的插槽留空),最后直接添加新项目。在最紧凑的情况下,这需要至少3行代码,更多的是边界检查和可选的更高效率路径。