1 数组和切片
数组,固定长度,长度也是其类型;
切片,变长,初始化长度需要make,配合append使用
数组
func xhhArray() {
// int 默认0 string 默认"" bool 默认false
var arr [5]int
// len(arr)=5 cap(arr)=5 arr=[0 0 0 0 0]
fmt.Printf("len(arr)=%d cap(arr)=%d arr=%v\n",
len(arr), cap(arr), arr)
}
切片
func xhhSlice() {
// [1] 初始化空的
var sli1 []int
// len(sli1)=0 cap(sli1)=0 sli1=[]
fmt.Printf("len(sli1)=%d cap(sli1)=%d sli1=%v\n",
len(sli1), cap(sli1), sli1)
// 添加一个元素
sli1 = append(sli1, 11)
fmt.Printf("len(sli1)=%d cap(sli1)=%d sli1=%v\n",
len(sli1), cap(sli1), sli1)
// [2] 初始化 长度为5空间为5 [make([]int, 5, 10):长度为5空间为10]
//sli2 := make([]int, 5)
sli2 := []int{
11, 22, 33, 44, 55}
// len(sli2)=5 cap(sli2)=5 sli2=[0 0 0 0 0]
fmt.Printf("len(sli2)=%d cap(sli2)=%d sli2=%v\n",
len(sli2), cap(sli2), sli2)
// 移除第0个元素 -> sli2 = sli2[1:]
// 移除第1个元素 -> sli2 = append(sli2[:1], sli2[2:]...)
// 移除最后一个元素
sli2 = sli2[:len(sli2)-1]
fmt.Printf("len(sli2)=%d cap(sli2)=%d sli2=%v\n",
len(sli2), cap(sli2), sli2)
/*
len(sli1)=0 cap(sli1)=0 sli1=[]
len(sli1)=1 cap(sli1)=1 sli1=[11]
len(sli2)=5 cap(sli2)=5 sli2=[11 22 33 44 55]
len(sli2)=4 cap(sli2)=5 sli2=[11 22 33 44]
*/
}
数组和切片
切片引用数组时,当切片不扩容时,修改的是数组的值,否则底层引用了新的数组
func xhhArrAndSlice() {
// [1] 数组
strs := [3]string{
"xhh", "mcy", "abc"}
fmt.Printf("len(strs)=%d cap(strs)=%d strs=%v\n",
len(strs)