作者:卖砖头的小男孩 | 来源:互联网 | 2023-10-16 10:56
一、申明slice会产生什么1.1申明slice当咱们申明一个slice类型,它理论的值什么?{代码}如上咱们申明了一个[]int的slice切片类型输入如下:{代码
一、申明slice会产生什么
1.1 申明slice
当咱们申明一个slice类型,它理论的值什么?
func TestSlice(t *testing.T) {
var sl []int
if sl == nil {
t.Log("nil")
}
t.Log(sl == nil)
t.Log(len(sl))
t.Log(cap(sl))
t.Log(sl)
}
如上咱们申明了一个 []int的 slice切片类型
输入如下:
nil
true
0
0
[]
咱们看到sl = nil,阐明没有调配这个变量内存。
1.2 申明并且赋值一个slice会产生什么
func TestSlice2(t *testing.T) {
var sl []int = []int{1, 2, 3} //或 sl := []int{1, 2, 3}
if sl == nil {
t.Log("nil")
}
t.Log(sl == nil)
t.Log(len(sl))
t.Log(cap(sl))
t.Log(sl)
}
此时咱们赋值了一个slice,输入如下:
false
3
3
[1 2 3]
二、make slice 会产生什么
咱们对于第一个代码,在var的时候 减少一个make
func TestSlice3(t *testing.T) {
var sl []int = make([]int, 0)
if sl == nil {
t.Log("nil")
}
t.Log(sl == nil)
t.Log(len(sl))
t.Log(cap(sl))
t.Log(sl)
}
输入如下:
false
0
0
[]
sl不再等于nil了,阐明调配了内存。