1. 程式人生 > >數組/切片以及擴容的概念 | Go語言基礎

數組/切片以及擴容的概念 | Go語言基礎

數據結構 package string func 元素 長度 ++ 變長數組 聲明

package main // 當前包聲明


func main() { // 程序的入口
    // 數組
    //     存儲一組相同數據類型的數據結構
    //  連續開辟內存,數組的地址其實是數組的首地址
    //  一旦定義,大小不能改變
    //  創建數組 ==> 訪問數組(賦值,取值)
    var arr [4] int
    arr[0] = 1
    arr[1] = 2
    arr[2] = 3
    arr[3] = 4
    fmt.Println(arr)  // 未賦值為默認值

    // 遍歷數組
    for i:=0;i<len(arr);i++ //
len()獲取長度,cap()獲取容器存儲的最大數量,對於數組len()與cap()相同 fmt.Println(arr[i]) } // range 取下標與值 arr := [10]int{1,2,3,4,5,6,7,8,9,10} // "_"處理不需要的返回值 for _, v := range arr{ fmt.Println(v) } // 數組其他創建方式 var b = [4] int {1,2,3,4} fmt.Println(b) // 根據下標:值 var c = [5] int
{1:1, 3:2} fmt.Println(c) // 用"..." 表示數組長度推斷 //d := [...] string {"1", "2", "3"} //fmt.Println(d, "\n", len(d)) // 值類型:存儲的是數值本身; 引用類型:存儲數據的內存地址 // 切片 // 變長數組(引用類型的容器,指向底層數組),不寫長度就是切片 // 創建切片 var a []int fmt.Println(a) var b = [] int {1,2,3} fmt.Println(b) // make
a := make([]int,3,8) // 類型,長度,容量 fmt.Println(a) // 添加元素 var tempSlice [] int tempSlice = append(tempSlice,1,2,3,4,5) fmt.Println(tempSlice) mySlice := []int{1,2,3} tempSlice = append(tempSlice, mySlice...) // 添加切片中的元素`...` fmt.Println(tempSlice) // 根據數組創建切片,地城數組就是當前的數組 // 長度是從start到end切割的數據量,但是容量是start到數組的末尾. a := [...]int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10} mySlice := a[0:5] // start:end fmt.Printf("%T %v", a, a) fmt.Printf("%T %v", mySlice, mySlice) // 擴容 // 當向切片中添加數據時,如果沒有超過容量,直接添加,如果超過容量,自動擴容(成倍增長) // 當超過容量,切片指向的就不再原來的數組,而是內存地址中開辟了一個新的數組. }

數組/切片以及擴容的概念 | Go語言基礎