make() 和 []T{} [duplicate] 之间的区别

difference between make() and []T{} [duplicate]

提问人:raul dangio 提问时间:8/2/2023 更新时间:8/2/2023 访问量:45

问:

我正在学习 golang 中的切片,我学习如何以两种不同的方式初始化切片:

func main() {
    slice1 := make([]int, 5, 10)
    slice1 = append(slice1, 1, 2, 3, 4)

    slice2 := []int{1, 2, 3, 4}
}

有什么区别?

我正在搜索,但一无所获,如果有人能回答,我会很高兴。

切片

评论


答:

1赞 Burak Serdar 8/2/2023 #1

下面创建一个长度为 5 且容量为 10 的切片(即分配一个包含 10 个元素的数组,创建一个指向该数组的切片,长度=5)。这发生在运行时,并且 slice 元素初始化为零值:

slice1 := make([]int, 5, 10)

下面创建一个 length=4 且 capacity=4 的切片

slice2 := []int{1, 2, 3, 4}

数组文字是在编译时创建的,切片是在运行时创建的,指向 len=4 和 cap=4 的数组。[]int{1,2,3,4}