1.固定数组
2.动态数组
3.slice声明方式(4种)
4.slice追加与截取
1.固定数组
长度固定,传参的时候,严格匹配数组类型
var myArray1 [10]int
myArray2 :=[10]int{1,2,3,4}
myArray3 :=[4]int{11,22,33,44}
package main
func printArray(myArray [4]int){
for index,value := range myArray{
fmt.Println("index =",index,",value=",value)
}
}
func main1(){
//固定长度的数组
var myArray1 [10] int
myArray2:=[10] int{1,2,3,4}
for i:=0;i<len(myArray1);i++{
fmt.Println(myArray1[i])
}
for index,value := range myArray2 {
fmt.Println("index =",index,",value=",value)
}
//查看数组的数据类型
fmt.Printf("myArray1 types = %T\n",myArray1)
fmt.Printf("myArray2 types = %T\n",myArray2)
fmt.Printf("myArray3 types = %T\n",myArray3)
printArray(myArray3)
}
2.动态数组
//声明
myArray := []int{1,2,3,4}
//引用传递
func printArray(myArray []int){}
package main
import "fmt"
func printArray(myArray []int){
//引用传递 _匿名变量
for _,value :=range myArray{
fmt.Println("value=",value)
}
myArray[0]=100
}
func main(){
myArray:=[]int{1,2,3,4} //动态数组,切片slice
fmt.Printf("myArray type is %T\n",myArray)
printArray(myArray)
fmt.Println("===========")
for _,value := range myArray{
fmt.Println("value=",value)
}
}3.slice声明方式
package main
import "fmt"
func main(){
//1.声明slice 是一个切片并初始化,默认值为1,2,3 长度len 为3
slice1:=[] int{1,2,3}
//2.声明slice1是一个切片 ,但没有分配内存空间
var slice1 []int
//slice1= make([]int,3) //开辟个空间,默认值为0
//声明slice1是一个切片并分配空间
var slice1 []int=make([]int,3)
//声明slice1是切片,分配空间,初始值为0
slice1 :=make([]int,3)
fmt.Printf("len=%d,slice=%v\n",len(slice1),slice1) //%v显示全部
//判断一个silce是否为0
if slice1==nil{
fmt.Println("slice1 是一个空切片")
}else{
fmt.Println("slice1 是有空间的")
}
}
4.slice追加与截取
4.1切片的扩容

当超过5时,再开辟一次的容量是5.
len :指针的距离。
cap:顶层数据末尾的容量,成倍增长。
扩容,超过容量时是成倍的扩的。
func main(){
//1.设置容量和不设置容量
var numbers=make([]int,3,5) //设置容量
var numbers=make([]int,3) //不设置容量
//2.添加元素
numbers=append(numbers,1)
fmt.Printf("len= %d,cap=%d,slice= %v\n",len(numbers),cap(numbers),numbers)
numbers=append(numbers,2)
//3.已满时,追加
numbers=append(numbers,3)
fmt.Printf("len= %d,cap=%d,slice= %v\n",len(numbers),cap(numbers),numbers)
} 4.2切片的截取:
//下标截取与Python一样
package main
import "fmt"
func main(){
s:=[] int{1,2,3} //len=3,cap=3,[1,2,3]
//[0,2]
s1 :=s[0:2]
fmt.Println(s1)
s1[0]=100
fmt.Println(s)
fmt.Println(s1)
//copy 深拷贝
s2 :=make([]int,3)
copy(s2,s)
版权声明:本文为aggie4628原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。