◆【迴圈】
▶for
1,通常
for i=0; i < 5; i++
▶ 不常用
goto
◆【陣列】▶定義
1,定義陣列
vara [3]int
varb [4]int
2,定義時初始化
var testarray = [3]string
3,編譯器推導陣列長度
var testarray = [...]string
4,使用索引值初始化
var testarray = [...]string▶遍歷
1,for迴圈
for i := 0; i < len(testarray); i++ ,,或:
testarray := [2][2]string,
}多維陣列簡寫:
testarray := [...][2]string,
}2,遍歷二維陣列
for_, v1 :=rangetestarray }▶
注意事項
1,陣列是值型別,賦值,傳參,都是拷貝了乙份完整副本。
◆【切片】
1,定義
var s1 string //宣告切片;此時,s1是乙個空切片,長度和容量為0;且s1==nil
var s2 int{} //宣告並且初始化;此時,s1是乙個空切片,長度和容量為0;且s2!=nil
var s3 = int
2,基於陣列定義切片
a := [5]int
切片:b:= a[1:4]
切片再切片:c :=b[1:len(b)]
3, make函式構造切片
a := make(int, 2, 5) //此切片個數為2,容量為5
a := make(int, 0) //a != nil
4,通過len()函式獲取切片長度
5,通過cap()函式獲取切片容量
6,切片不能直接比較。
可以和nil比較,例:s1 == nil
使用len函式判斷是否為0.
7,切片的賦值拷貝
切片賦值時,底層陣列是一致的。
s1 := make //[0,0,0,0,0]
s2 :=s1
s2[0] = 5 //此時,s1[0]值也為5
切片宣告後,必須初始化,才能使用。
例:var a int //宣告,並未申請記憶體。
追加元素(例):
b := int
9,copy函式複製切片;此時,二者底層的陣列不同。
例:a := int
b := make(int,3,3)
c := b //直接賦值,則c與b共用底層陣列,修改b,則修改c.
copy(b,a) //拷貝a到b
b[0] = 10
fmt.println(a)
fmt.println(b)
10,切片刪除元素
切片沒有直接刪除操作;間接方法如下:
11,切片排序sort
var a = [...]int
sort.ints(a[:]) //a[:]是乙個切片,指向底層陣列a.
fmt.println(a) //上面對切片排序,影響的是底層陣列。
◆【map】
1,定義map;
不初始化時為nil;
var a map[string]int //key為string;值為int
a = make(map[string]int,9) //make初始化
b := map[int]boot{ //宣告時,初始化
1:true,
2:false,
2, 判斷鍵是否存在
map是無序的。
value, ok := socremap["test1"] //如果test1存在,value返回值,ok為true.
①遍歷鍵,值對
for k, v := range scoremap {
fmt.println(k,v)
②只遍歷key。
for k := range scoremap {
fmt.println(k)
③只遍歷value.
for _, v := range scoremap {
fmt.println(v)
3,刪除鍵值對
delete(scoremap,"test1")//使用delete函式,刪除scoremap中的test1鍵值對。
value := rand.intn(100) //生成0~99的隨機數。
4,其它
值為切片的map;
var slicemap = make(map[string]int,8) //只完成了map的初始化,後續使用要初始化切片。
Go 指標,陣列,切片,Map
附上go 引用的方式只有一種 值傳遞 package main import fmt go 指標 1.值,引用傳遞 值 值進行拷貝 引入 位址的引用 2.go 引用的方式只有一種 值傳遞 func main 指標操作的2數互換 func swap a,b int func swapk a,b int...
go語言學習 陣列 切片 map
go語言中陣列的特點 陣列的長度是固定的,並且長度也是陣列型別的一部分 是值型別,在賦值或者作為引數傳遞時,會複製整個陣列,而不是指標 定義陣列的語法 var arr1 5 int 5 int 未初始化的值,就預設初始化為該型別的預設值 var arr2 int 3 int 長度可由初始化的元素個數...
go陣列 切片
陣列 陣列指標 fmt.println 陣列指標 i int var p 10 int i fmt.println p fmt.println p x,y 1,2 j int fmt.println j k 2 int l 2 int fmt.println k l 指向陣列的指標 m new 5 ...