数组与动态数组
数组声明与遍历
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| var myArray1 [10]int 或 myArray2 [10]int{1,2,3,4}
for i:=0;i<10;i++{ fmt.Println(myArray1[i]) }
for index,value := range myArray2{ fmt.Println(index,value) }
|
数组传参建议使用动态数组Slice。
1 2 3 4 5 6 7 8 9 10
| myArray :=[]int{1,2,3,4}
func test(myArray []int){
myArray[0]=1 ... }
|
Slice切片声明
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
|
slice1 := []int{1,2,3,4,5}
var slice2 []int
slice2=make([]int,5)
var slice3 []int=make([] int,3)
slice4 :=make([] int,3)
if(slice == nil){ fmt.Println("null") }
|
Slice的截取与追加
len与cap的区别:
- len为数组首指针到尾指针之间的长度,为数组中已分配的空间长度。
- cap为数组首指针到数组底层的长度,为该数组的最大长度。
使用append为动态数组追加元素。
1 2 3 4 5
|
slice:=make([]int,3)
slice=append(slice,1)
|
具体切片方法类似于Python数组的切片方法。
copy函数的使用
1 2 3 4 5 6 7
| s1 := []int{1,2,3} s2 := make([]int,3) copy(s2,s1)
|
Map的定义与使用
类似于Python中的字典,结构为键值对。([键:值])
1 2 3 4 5 6 7 8 9 10 11 12 13
|
myMap1 :=make(map[string]string,10)
myMap1["key"]="values" 或 myMap2:=map[string]string{
1:"values1" 2:"values2" 3:"values3" ... }
|
对Map的操作
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
myMap["keys"]=["values"]
for key,value:=range myMap{ fmt.Println(key) fmt.Println(value) }
delete(myMap,"keys")
myMap["newKeys"]=["newValues"]
|