GO 語言學習記錄3--容器

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

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