Go語言中陣列 切片 Map知識點分享

2021-10-19 21:04:24 字數 2752 閱讀 9699

一、陣列

1、定義: var 陣列名 [陣列大小] 陣列型別 eg:var arr [11]int(定於乙個名字為arr的整型陣列大小為11)

2、賦值:以arr為例,arr[0]=1;

3、陣列的記憶體布局

&arr可以獲得arr的陣列位址,陣列中第乙個元素的位址就是陣列的位址,之後的陣列位址根據陣列的型別決定,比如假如是int32型別陣列,第二個元素位址遞增4個位元組。

順便說一下型別所佔位元組數(參考

int8: 8位,就是乙個位元組

int16: 2個位元組

int32: 4個位元組

int64:8個位元組)

float32: 4個位元組

float64: 8 個位元組

string

英文的ascii的string 1個英文本元或英文標點佔1byte

中文的string 乙個文字占用 3 byte

bool: 占用1byte

記憶體分析圖:

如上圖所示,定義了乙個int32的整形陣列(int64的所佔位元組大小是8個位元組),可以由圖看出intarr[0]的位址是0xc04204a0a0(第乙個元素的位址也是陣列的位址),所以第二個元素的位址是首位址+8(位元組大小,以16進製制運算),所以第二個元素的位址是0xc04204a0a8,同理可以推出後面元素的位址。

4、陣列的注意事項

1)型別:值型別,只能進行值拷貝,如果想在其他函式中改變陣列,需要使用引用傳遞(指標)

2)go語言中陣列具有預設值,int型別是0,string 是"",bool是false

二、切片

1、定義:var 切片名字 切片型別 eg:var slice int 定義乙個整型切片

2、型別:切片是引用型別,所以切片是引用傳遞

如圖所示,切片本質上是乙個struct結構體,第乙個元素儲存位址,第二個儲存長度,第三個儲存容量

type  slice  struct

3、切片的使用

1)由於切片是引用型別,需要自己分配記憶體,所以需要make來建立切片;

var 切片名 [

] 切片型別 =

make([

]切片型別,

len,

cap)

//如果分配了cap一定比len大

var slice [

]int

=make([

]int,4

,5)//定義乙個切片並且分配記憶體

三、map1、定義 :var 變數名 map [keytype] valuetype eg:var maptest map[int] string上述定義了乙個key為int型別,value為string型別的map;

2、注意事項:

1)slice,map,function不能作為key來使用;

2)map的宣告不能分配記憶體,分配記憶體後才能進行使用;

記憶體分配示例:

var map1 map

[int

]string

map1=

make

(map1[

int]

string,4

)//給map1分配空間

//第二種方式定義

map1:=

make

(map1[

int]

string,4

)

3)map的增刪改查

增加,修改:

map

["key"]=

"value"

//當key值不存在就增加,當key值存在就修改

刪除:

delete

(map

,"key"

)//刪除map中的key鍵值的value資訊

查詢:

val,ok:=

map[

"查詢的鍵值對"

]if ok

else

遍歷:

var map1 map

[int

]int

map1=

make

(map1[

int]

int,4)

map1[0]

=0map1[1]

=1map1[2]

=2map1[3]

=3for i,v :=

range map1

4)map切片的使用

var slice [

]map

[int

]string

//定義map切片

5)map是引用型別,採用引用傳遞

如果大家看完對自己有些許幫助,請點贊支援,謝謝

go語言學習 陣列 切片 map

go語言中陣列的特點 陣列的長度是固定的,並且長度也是陣列型別的一部分 是值型別,在賦值或者作為引數傳遞時,會複製整個陣列,而不是指標 定義陣列的語法 var arr1 5 int 5 int 未初始化的值,就預設初始化為該型別的預設值 var arr2 int 3 int 長度可由初始化的元素個數...

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語言中的切片

宣告乙個切片int型的切片 var s int 初始化乙個長度為len,容量為cap的切片 s make int,len,cap cap可以省略,省略後cap等於len 也可以簡潔的初始化 s make int len,cap 還可以指定值的建立切片 s int 指定索引值式的建立 s int 索引...