GO 語言容器
1. 數組的比較,很方便直接用== !=
2. 多維數組的聲明
// 聲明並初始化數組中索引爲 1 和 3 的元素
array = [4][2]int{1: {20, 21}, 3: {40, 41}}
// 聲明並初始化數組中指定的元素,即外面第一個元素(數組)中的第一個子元素賦值爲20
array = [4][2]int{1: {0: 20}, 3: {1: 41}}
3. 切片(切片(slice)是對數組的一個連續片段的引用,所以切片是一個引用類型()
取出的元素數量爲:結束位置 - 開始位置;
取出元素不包含結束位置對應的索引,切片最後一個元素使用 slice[len(slice)] 獲取
兩者同時爲 0 時,等效於空切片,一般用於切片復位。
3.1 聲明切片
// 聲明整型切片
var numList []int
// 聲明一個空切片,不爲nil,因爲已分配內存,切片不能直接判斷是否相等
var numListEmpty = []int{}
//使用make生成切片,其中 Type 是指切片的元素類型,size 指的是爲這個類型分配多少個元素,cap 爲預分配的元素數量,
這個值設定後不影響 size,只是能提前分配空間,降低多次分配空間造成的性能問題
make( []Type, size, cap )
//添加元素
var a = []int{1,2,3}
a = append([]int{0}, a...) // 在開頭添加1個元素
a = append([]int{-3,-2,-1}, a...) // 在開頭添加1個切片
var a []int
a = append(a[:i], append([]int{x}, a[i:]...)...) // 在第i個位置插入x
a = append(a[:i], append([]int{1,2,3}, a[i:]...)...) // 在第i個位置插入切片
//copy() 函數的使用格式
copy( destSlice, srcSlice []T) int
//刪除元素頭部
a = []int{1, 2, 3}
a = a[1:] // 刪除開頭1個元素
a = a[N:] // 刪除開頭N個元素
//刪除中部元素
a = []int{1, 2, 3, ...}
a = append(a[:i], a[i+1:]...) // 刪除中間1個元素
a = append(a[:i], a[i+N:]...) // 刪除中間N個元素
a = a[:i+copy(a[i:], a[i+1:])] // 刪除中間1個元素
a = a[:i+copy(a[i:], a[i+N:])] // 刪除中間N個元素
4. map
var mapname map[keytype]valuetype
mapname 爲 map 的變量名。
keytype 爲鍵類型。
valuetype 是鍵對應的值類型。
//map 容量
map2 := make(map[string]float, 100)
7. 遍歷列表
l := list.New()
// 尾部添加
l.PushBack("canon")
// 頭部添加
l.PushFront(67)
for i := l.Front(); i != nil; i = i.Next() {
fmt.Println(i.Value)
}
8. new 和 make 的區別
new 只分配內存,而 make 只能用於 slice、map 和 channel 的初始化
9. goto與return