slice

使用slice #

使用slice的时候,如果能预先确定它的大小,最好先设置好它的容量,避免后期扩容拷贝。预先大小也可能为零,所以总担心初始化能不能先申明容量为零。

func testMakeSlice() {
	var (
		a = make([]int, 0)
		b = make([]int, 0, 0)
	)
	fmt.Printf("a=%+v; b=%+v", a, b)
	fmt.Println()
	fmt.Printf("a's Length=%+v; b's Length=%+v", len(a), len(b))
	fmt.Println()
	fmt.Printf("a's Capacity=%+v; b's Capacity=%+v", cap(a), cap(b))
	fmt.Println()
	if a == nil {
		fmt.Println("a is nil")
	} else {
		fmt.Println("a is not nil")
	}
	if b == nil {
		fmt.Println("b is nil")
	} else {
		fmt.Println("b is not nil")
	}
}

func main() {
	testMakeSlice()
}
a=[]; b=[]
a's Length=0; b's Length=0
a's Capacity=0; b's Capacity=0
a is not nil
b is not nil