GO語言————8.4 map 型別的切片
8.4 map 型別的切片
假設我們想獲取一個 map 型別的切片,我們必須使用兩次 make()
函式,第一次分配切片,第二次分配 切片中每個 map 元素(參見下面的例子 8.4)。
示例 8.4 maps_forrange2.go:
package main
import "fmt"
func main() {
// Version A:
items := make([]map[int]int, 5)
for i:= range items {
items[i] = make(map[int]int, 1)
items[i][1] = 2
}
fmt.Printf("Version A: Value of items: %v\n", items)
// Version B: NOT GOOD!
items2 := make([]map[int]int, 5)
for _, item := range items2 {
item = make(map[int]int, 1) // item is only a copy of the slice element.
item[1] = 2 // This 'item' will be lost on the next iteration.
}
fmt.Printf("Version B: Value of items: %v\n", items2)
}
輸出結果:
Version A: Value of items: [map[1:2] map[1:2] map[1:2] map[1:2] map[1:2]]
Version B: Value of items: [map[] map[] map[] map[] map[]]
需要注意的是,應當像 A 版本那樣通過索引使用切片的 map 元素。在 B 版本中獲得的項只是 map 值的一個拷貝而已,所以真正的 map 元素沒有得到初始化。
相關文章
- go語言學習-陣列-切片-mapGo陣列
- go 語言切片Go
- Go語言————7.2 切片Go
- Go語言mapGo
- GO語言————8.5 map 的排序Go排序
- go語言——資料型別Go資料型別
- GO語言學習——切片二Go
- go語言資料型別-基礎型別Go資料型別
- Go語言學習——mapGo
- Go 語言切片是如何擴容的?Go
- Go語言————7.4 切片重組(reslice)Go
- GO語言————7.5 切片的複製與追加Go
- Go語言map的底層實現Go
- Go 語言型別系統詳解Go型別
- go語言資料型別轉換Go資料型別
- 概念區別 【編譯型語言與解釋型語言、動態型別語言與靜態型別語言、強型別語言與弱型別語言】編譯型別
- 語言型別介紹及其Python的語言型別型別Python
- 《快學 Go 語言》第 5 課 —— 神奇的切片Go
- GO語言————4.5 基本型別和運算子Go型別
- 6.Go語言基本資料型別Go資料型別
- Go 語言基礎 陣列、切片、對映Go陣列
- Go語言系列(三)之陣列和切片Go陣列
- go語言使用切片實現線性表Go
- 關於 Go 中 Map 型別和 Slice 型別的傳遞Go型別
- map 型別 - Go 學習記錄型別Go
- 《快學 Go 語言》第 5 課 —— 靈活的切片Go
- GO語言————7.6 字串、陣列和切片的應用Go字串陣列
- GO型別斷言Go型別
- Go語言——sync.Map原始碼分析Go原始碼
- GO語言基礎(結構+語法+型別+變數)Go型別變數
- GO語言————8.6 將 map 的鍵值對調Go
- Go語言入門系列(四)之map的使用Go
- Go語言學習(4) - 基本資料型別Go資料型別
- GO語言學習——基本資料型別字串Go資料型別字串
- Go語言的識別符號、關鍵字、字面量、型別Go符號型別
- Go 語言中的 切片 --sliceGo
- 計算機語言:編譯型/解釋型、動態語言/靜態語言、強型別語言/弱型別語言計算機編譯型別
- Go語言切片一網打盡,別和Java語法傻傻分不清楚GoJava