go語言--Array,Slice,Map

數組:

定義:golang中的數組和C語言中的數組是相似的,在 Go 語言中數組是固定長度的數據類型,它包含相同類型的連續的元素,這些元素可以是內建類型,像數字和字符串,也可以是結構類型,元素可以通過唯一的索引值訪問,從 0 開始。
數組是很有價值的數據結構,因爲它的內存分配是連續的,內存連續意味着可是讓它在 CPU 緩存中待更久,所以迭代數組和移動元素都會非常迅速。

使用方式:
1. 基本定義:
在這裏插入圖片描述

2. 快速定義
在這裏插入圖片描述

3. 直接複製一整個數組
在這裏插入圖片描述

4. 函數中使用數組一般是使用指針,不然的話類似一個100萬的數組,每次使用都要調用8M的內存
在這裏插入圖片描述

SLICE:

定義:slice 是一種可以動態數組,可以按我們的希望增長和收縮。它的增長操作很容易使用,因爲有內建的 append 方法。我們也可以通過 relice 操作化簡 slice。因爲 slice 的底層內存是連續分配的,所以 slice 的索引,迭代和垃圾回收性能都很好。

slice 是對底層數組的抽象和控制。它包含 Go 需要對底層數組管理的三種元數據,分別是:

  1. 指向底層數組的指針
  2. slice 中元素的長度
  3. slice 的容量(可供增長的最大值)

切片長度和容量的區別

  1. 切片擁有長度和容量。
  2. 切片的長度是它所包含的元素個數。
  3. 切片的容量是從它的第一個元素開始數,到其底層數組元素末尾的個數。
  4. 切片 s 的長度和容量可通過表達式 len(s) 和 cap(s) 來獲取。
  5. 大概能理解容量和長度的大概意思是,

初始化方式:

  1. 默認定義方式,如果只指定了長度,那麼容量默認等於長度。
    在這裏插入圖片描述

  2. 定義長度和容量
    在這裏插入圖片描述

  3. 正常slice,使用apend函數,容量足夠的話,那麼就會在原有的內存上增加,但是如果容量不足的,就會從新分配一個新的地址空間
    在這裏插入圖片描述

map結構:

定義:簡單的說就是一個類似php的字典,每個key對應一個value,他的特定是他是無序的,不會按照你的存入順序而排序,它也可以迭代。

定義方式:

  1. make方法定義和其他使用:=方法一樣直接定義
    在這裏插入圖片描述
    在這裏插入圖片描述
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章