一、陣列
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結構體,第乙個元素儲存位址,第二個儲存長度,第三個儲存容量
3、切片的使用type slice struct
1)由於切片是引用型別,需要自己分配記憶體,所以需要make來建立切片;
三、map1、定義 :var 變數名 map [keytype] valuetype eg:var 切片名 [
] 切片型別 =
make([
]切片型別,
len,
cap)
//如果分配了cap一定比len大
var slice [
]int
=make([
]int,4
,5)//定義乙個切片並且分配記憶體
var maptest map[int] string
上述定義了乙個key為int型別,value為string型別的map;
2、注意事項:
1)slice,map,function不能作為key來使用;
2)map的宣告不能分配記憶體,分配記憶體後才能進行使用;
記憶體分配示例:
3)map的增刪改查var map1 map
[int
]string
map1=
make
(map1[
int]
string,4
)//給map1分配空間
//第二種方式定義
map1:=
make
(map1[
int]
string,4
)
增加,修改:
刪除:map
["key"]=
"value"
//當key值不存在就增加,當key值存在就修改
查詢:delete
(map
,"key"
)//刪除map中的key鍵值的value資訊
遍歷:val,ok:=
map[
"查詢的鍵值對"
]if ok
else
4)map切片的使用var map1 map
[int
]int
map1=
make
(map1[
int]
int,4)
map1[0]
=0map1[1]
=1map1[2]
=2map1[3]
=3for i,v :=
range map1
5)map是引用型別,採用引用傳遞var slice [
]map
[int
]string
//定義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 索引...