gpt4 book ai didi

go - make([]int, 0)、[]int{} 和 *new([]int) 之间有什么区别?

转载 作者:IT王子 更新时间:2023-10-29 00:55:18 26 4
gpt4 key购买 nike

根据 https://play.golang.org/p/7RPExbwOEU它们都打印相同并且具有相同的长度和容量。三种初始化 slice 的方式有区别吗?有首选方法吗?我发现自己同时使用 make([]int, 0)[]int{} 的频率相同。

最佳答案

这会初始化一个 0 长度的 slice 。

make([]int, 0)

使用make 是初始化具有不同于长度的特定容量的 slice 的唯一方法。这分配了一个长度为 0,但容量为 1024 的 slice 。

make([]int, 0, 1024)

这是一个 slice 文字,它也初始化了一个 0 长度的 slice 。使用这个或 make([]int, 0) 是唯一的偏好。

[]int{}

这会初始化一个指向 slice 的指针,该 slice 会立即取消引用。 slice 本身还没有被初始化,仍然是 nil,所以这实际上什么都不做,等同于 []int(nil)

*new([]int)

关于go - make([]int, 0)、[]int{} 和 *new([]int) 之间有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42795382/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com