一、申明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切片类型
输入如下:
niltrue00[]
咱们看到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,输入如下:
false33[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)}
输入如下:
false00[]
sl不再等于nil了,阐明调配了内存。