func main(){ var array [10]int sliceA := array[0:5] append(sliceA, 4) fmt.Println(sliceA) }
错误:已计算但未使用append(sliceA,4)我不知道为什么?切片追加操作没有运行...
toiithl61#
请参阅:附加和复制切片在Go语言中,参数是按值传递的。典型的append用法是:
append
a = append(a, x)
您需要填写:
func main(){ var array [10]int sliceA := array[0:5] // append(sliceA, 4) // discard sliceA = append(sliceA, 4) // keep fmt.Println(sliceA) }
输出:
[0 0 0 0 0 4]
z6psavjg2#
sliceA = append(sliceA, 4)
append()返回包含一个或多个新值的切片。注意,我们需要接受append的返回值,因为我们可能会得到一个新的切片值。
append()
wqsoz72f3#
你可以试试这个:
内置函数append([]type, ...type)返回一个类型为的数组/切片,该类型应该被赋给您想要的值,而输入数组/切片只是一个源。
append([]type, ...type)
2skhul334#
根据Go文档:append的结果值是一个切片,其中包含原始切片的所有元素以及提供的值。因此,“append”的返回值将包含原始切片和附加部分。
kyxcudwk5#
要理解的关键是slice只是一个底层数组的"视图"。你把这个视图传递给append函数by value,底层数组被修改,最后append函数的返回值给你底层数组的不同视图。也就是说,slice有更多的元素
your code sliceA := array[0:5] // sliceA is pointing to [0,5) append(sliceA, 4) // sliceA is still the original view [0,5) until you do the following sliceA = append(sliceA, 4)
参考:https://blog.golang.org/slices
5条答案
按热度按时间toiithl61#
请参阅:附加和复制切片
在Go语言中,参数是按值传递的。
典型的
append
用法是:您需要填写:
输出:
z6psavjg2#
append()
返回包含一个或多个新值的切片。注意,我们需要接受append的返回值,因为我们可能会得到一个新的切片值。
wqsoz72f3#
你可以试试这个:
内置函数
append([]type, ...type)
返回一个类型为的数组/切片,该类型应该被赋给您想要的值,而输入数组/切片只是一个源。2skhul334#
根据Go文档:
append的结果值是一个切片,其中包含原始切片的所有元素以及提供的值。
因此,“append”的返回值将包含原始切片和附加部分。
kyxcudwk5#
要理解的关键是slice只是一个底层数组的"视图"。你把这个视图传递给append函数by value,底层数组被修改,最后append函数的返回值给你底层数组的不同视图。也就是说,slice有更多的元素
参考:https://blog.golang.org/slices