Go 陣列 多維陣列 切片 map 2

2022-06-11 10:21:06 字數 2473 閱讀 7017

◆【迴圈】

▶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 ...