-
数组
Go语言中的数组和python中的列表,php中的关联数组还不一样。python中的列表和php中的关联数组可以任意伸缩,而go中的数组则需要指定数组的长度,一旦长度确定就不允许修改。
// 只能存入三个字符串 var arr1 [3]string = [3]string{"a","b",c} // 语法糖 ... , 在给变量赋值时可以不指定个数,同时也可以打散数据,类似于python中的* 和 ** arr1 := [...]int{1,2,3,4}
-
切片
-
动态数组,可以认为就是python中的列表,由三部分组成 指针,长度,容量。
-
使用make函数可以创建一个切片 make([]int,2,4) -> []int 指针 2切片长度 4切片容量
-
使用字面量也可以创建一个切片 arr := []int{10,20,30,40} 切片的长度和容量都为4
-
创建字符串切片并初始化第100个元素 str_slice := []string(99:"")
-
-
切片限制容量 arr := arr1[2:3:4] 设置的容量不能大于切片的容量,这个案例中切片的容量为5,如果将4换成6 则会报
panic: runtime error: index out of range [2] with length 1
错误,一般设置可用容量和长度一致。-
例子
arr := [...]int{1,2,3,4,5} fmt.Println(arr[0:1])
// 声明一个切片使用make关键字 slice := make(类型,长度,容量(可选)) // 查看容量大小 使用cap函数 cap(slice)
// 切片添加数据 tmp := make([]int,8,10) // 前8位都是0 [0,0,0,0,0,0,0] tmp = append(tmp,1) // 在前8位的基础上追加1 [0,0,0,0,0,0,0,1] tmp = append(tmp,2) // 在前9位的基础上追加2 [0,0,0,0,0,0,0,1,2]
// 使用语法糖 ...解包的作用 arr := []int{2,4,6} arr = append(arr,[]int{7,8,9}...)
-