數組和切片知識用的也是比較多,的給咱們工做帶來很大的便利golang
定義:在golang中數組的長度是不可變,數組存放要求是同一種數據類型
//golang中數組定義的四種方法
1.先聲明,後賦值
var arr1 [2]int
arr1[0]=1
arr1[1]=2
2.聲明同時賦值
var arr2 = [2]int{1,2}
//或者
arr2 := [2]int{1,2}
3.不指定長度程序自動計算長度
var arr = [...]int{1,2}
//或者
arr := [...]int{1,2}
4.key和value的形式
var arr = [...]int{1:1,0:2}
//或者
arr := [...]int{1:1,0:2}
//golang中數組遍歷的兩種方法
1.常規方法
for i:=0;i<len(arr);i++ {
fmt.Printf("arr[%d] = %v",i,arr[i])
}
2.高級方法(推薦使用)
for key(_),value:= range arr{
fmt.Printf("arr[%d] = %v",i,arr[i])
}
//動態修改數組的值,默認狀況下數組是值傳遞 //形參定義成一個指針數據類型 func T2(a *[]string) { *a[0] = 99 //修改原來的值 } func main() { s1 := [...]string{11,22} T2(&s1) //傳遞一個數組的地址做爲實際參數 s1 = append(s1 , "33") fmt.Println(s1) }
//數組指針和指針數組
1.數組指針便是一個指針而且這個指針保存了一個指向數組的地址
var arr = [...]int{5:2} //數組指針 var pf *[6]int = &arr
2.指針數組便是一個數組,數組裏面保存不少指針
x,y := 1, 2
pfArr := [...]*int{&x,&y}
//多維數組(二維)
1.多維數組即數組裏面又是一個數組
2.定義方法
2.1先定義再賦值
var arr1 [2][2]int
arr1[0][0] = 5.....
2.2定義的同時賦值
var arr2 [2][2]int = [2][2]int{{1,2,3},{3,4,5}}
3.多維數組的遍歷
3.1
for i:=0;i<len(arr);i++{
for j:=0;i<len(arr[i]);j++{
}
}
3.2
for i;value1 :=range arr2{
for j;value2 :=range value1 {
}
}
切片是數組的引用,而且是動態的數組,長度能夠變化.數組
//切片的定義的幾種方法 1.數組的引用
var intArr [4]int = [...]{12,34,44,33,11}
slice := intArr[1:3]
2.make定義
var slice []type = make([]type,len,[cap])
3.常規用法
var slice []type = []type{value1,value2,value3}
遍歷的方法和數組也是同樣的就不繼續囉嗦了
//切片的內置函數 1.動態添加切片 append(切片,value1,value2,value3) 2.切片的copy copy(切片1,切片2)
//字符的切片
1.字符的切片在某種狀況下是不可變的
2.想要修改字符串中的值[]byte(str)[這種是處理英文方式],[]rune(str)[這種是處理中文方式]