一、申明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了,阐明调配了内存。