數組和切片
數組:
聲明: var arr [5]int
初始化: arr := [3]int{1, 2, 5}
代碼:
概念:
- 數組是值引用将一個數組指派另一個會拷貝所有元素
- 給一個函數傳遞數組, 将收到一個數組所有元素, 而不是引用
- 數組長度聲明之後就不可變化
切片:
聲明: var slice []int
初始化:
- 第一種初始化,基于數組方式(中括号中參數:startIndex和endIndex)
- 第二種初始化方式(建立并初始化3個元素)
- 第三種方式(也是比較常用方式, 初始化長度是5, 并預留10個空間, 初始化是5個0, 如果使用append追加元素,将會從index=5開始)
概念:
- 切片是對數組封裝, 切片可以看成一個大小可以變化的數組, 類似于java中List, Go中大部分程式設計通過切片完成
- 切片持有對底層數組引用, 如果講一個切片指派另一個, 二者都會引用同一個數組, 如果一個函數接受一個切片作為參數, 那麼對切片所做的改動會對調用者可見, 好比傳遞一個引用.
append: go專門為切片提供内置函數, append用來增加元素.