Go入門(三)-Go基礎(二)

導讀:本文介紹Go的數組類型,slice類型,map類型,以及相關的一些內置函數。

3.4.4 數組類型
1 數組的定義,賦值方式如下:

2 多維數據的定義

3.4.5 slice類型
在java中數組類型的長度一旦確定,是不可更改的,而在Go,slice是一種動態數組,長度可變。slice其實是一種引用類型,指向一個底層的array。
3.4.5.1 聲明方式和array一樣,但是不需要指定長度;
3.4.5.2 初始化可從已有的數組截獲取,可以重新賦值;
3.4.5.3 slice有默認的起始取值位置arr[0]和默認的長度len(arr);

3.4.5.4 slice實際上有三個變量的結構體(struct),一個是指針int*,指向數組的起始位置,一個是長度len,一個是容量cap;

通過ide的調試功能,我們可以看到以下信息:

存儲結構如下所示;

3.4.5.5 slice有4個內置函數,len(slice),cap(slice),append(slice,11,12,13),copy(slice,bslice),具體用戶如下,make是指分配一塊內存,如果只是定義個空的slice,是無法進行copy操作的,通過以下測試,我們可以知道,在進行append操作時,slice在長度不足時,會增加一倍的容量;

3.4.6 map類型
map是一種無序的鍵值對的集合,通過key來檢索數據,聲明方式:map[keyType]valueType,看上去跟數組差不多。

3.4.6.1 map是無序的,每次打印的map的都不一樣;
3.4.6.2 map長度不是固定的,和slice一樣,是一種引用類型;
3.4.6.3 內置函數len(map)同樣適合map;
3.4.6.4 刪除操作,通過delete(map,key)函數完成;

3.4.7 make、new操作
make用於內建類型map、slice 和channel(後面會詳講)的內存分配。new用於各種類型的內存分配。make返回一個有初始值(非零)的T類型,new(T)返回了一個指針,*T類型,指向新分配的類型T的零值。

Have fun!
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章