您可以在Go Playground上运行示例代码.
这是代码:
package main
import "fmt"
func main() {
numbers := []int{1, 2, 3, 4, 5}
fmt.Println(numbers)
_ = append(numbers[0:1], numbers[2:]...)
fmt.Println(numbers)
}
Run Code Online (Sandbox Code Playgroud)
输出:
[1 2 3 4 5]
[1 3 4 5 5]
Run Code Online (Sandbox Code Playgroud)
为什么numbers通过追加修改切片?这是预期的行为,如果是的话,你能解释一下为什么吗?我认为append不会修改它的论点.
请参见http://blog.golang.org/go-slices-usage-and-internals.
如果要附加到切片的内容不适合当前切片的容量,则append函数可以分配新的基础数组.Append 会修改底层数组.你必须分配回变量的原因是因为,正如我在第一句中所说,底层数组可以重新分配,旧切片仍将指向旧数组.
请参阅此播放示例以查看我正在谈论的内容.
| 归档时间: |
|
| 查看次数: |
663 次 |
| 最近记录: |