共计 622 个字符,预计需要花费 2 分钟才能阅读完成。
一、申明 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 了,阐明调配了内存。
正文完