Go(4 [Map])
Map簡介:
key-value的資料結構,又叫字典或關聯陣列
Map資料結構:
map是引用型別
寫法:var map1 map[keytype]valuetype
一:字典宣告
注意:宣告是不會分配記憶體的,初始化需要make
所以:可以簡寫為 test :=make(map[string]int,10)
--> 建立一個test字典: key型別為string,value型別為int,長度為10. (如果超出會panic,index out of range)
var map1 map[keytype]valuetype
var a map[string]string
var a map[string]int
var a map[int]string
var a map[string]map[string]string
var a map[string]inta = make(map[string]int,10)a["abc"] = 200a["abc"] = 1200a["hello"] = 222
二:Map操作
var c map[string]string = map[string]string{"hi":"word"}c["cc"] = "aaa"
插入:
a[“hello”] = “world”
查詢:
//字典查詢:透過key查詢val.// --返回2個元素,一個是val,一個是布林值//字典查詢key時,如果只指定一個返回值,那找不到就是0//這種方法,不好確定,如果val是0呢? 那就尷尬了Val,exist:= a[“hello”]if exist{ fmt.Printf("val=%dn",ok)}else { fmt.Printf("not found %sn",val)}
遍歷:
for k,v :=range a{ fmt.Println("for",k,v)}
刪除:
//a字典//hello is keydelete(a,"hello")
長度:len(a)
示例:函式傳遞字典
func test2(a map[string]int) { a["one"] = 134}func mian(){//map 是引用型別,所有會修改原有mapa := make(map[string]int,10)test2(a)}
三:map中建立切片
栗子1:
func test4() { aa := make([]map[int]int, 5) for i := 0; i < 5; i++ { aa[i] = make(map[int]int) aa[i][2] = 2 } fmt.Println("test4",aa)}>>>test4 [map[2:2] map[2:2] map[2:2] map[2:2] map[2:2]]
栗子2:
func test3() { //建立切片, //切片裡面放置map //預設map都是nil,需要賦值 s:=make([]map[string]int,10) for i:=0;i<len(s);i++{ //賦值初始化 //100是map的容量.如果超了。底層會自動擴容 s[i] = make(map[string]int,100) } s[0]["aaa"]=100 s[0]["acc"]=100 s[0]["1aa"]=100 s[2]["ccc"]=100 fmt.Println("sss",s)}>>>sss [map[aaa:100 acc:100 1aa:100] map[] map[ccc:100] map[] map[] map[] map[] map[] map[] map[]]
四:Map排序
先獲取所有key,把key排序
按照拍好序的key,進行遍歷
var keys []stringfor k, v := range a { fmt.Printf("a[%s] = %dn", k, v) keys = append(keys, k)}sort.Strings(keys)for _, k := range keys { fmt.Printf("Sort,a[%s]=%dn", k, a[k])}
宣告是不會分配記憶體的,初始化需要make
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4328/viewspace-2817242/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- go 併發 mapGo
- Go中的MapGo
- Go語言mapGo
- go map 和 sliceGo
- Go map相關Go
- Go 1.9 sync.MapGo
- 深入理解 Go MapGo
- Go1.9sync.MapGo
- day06 go mapGo
- 深度解密Go語言之 map解密Go
- Go語言學習——mapGo
- 26_map遍歷.goGo
- Go 基礎篇之 MapGo
- Go 基礎教程--8-mapGo
- PHP轉Go系列:map對映PHPGo
- 24_map的基本使用.goGo
- GO 中 map 的實現原理Go
- go 學習筆記---map(字典)Go筆記
- go sync.Map原始碼分析Go原始碼
- GO語言————8.5 map 的排序Go排序
- 深度解密 Go 語言之 sync.map解密Go
- Go sync.Map 看一看Go
- map 型別 - Go 學習記錄型別Go
- 【Go進階—資料結構】mapGo資料結構
- 兄弟連go教程(18)資料 - MapGo
- Go語言——sync.Map原始碼分析Go原始碼
- 深入 Go 的 Map 使用和實現原理Go
- 五、GO程式設計模式:MAP-REDUCEGo程式設計設計模式
- 聽說過對 Go map 做 GC 嗎?GoGC
- Java HashMap和Go map原始碼對比JavaHashMapGo原始碼
- Go語言map的底層實現Go
- 優化 Go 中的 map 併發存取優化Go
- go中map的資料結構理解Go資料結構
- GO程式設計模式05:MAP-REDUCEGo程式設計設計模式
- go語言學習-陣列-切片-mapGo陣列
- GO語言————8.4 map 型別的切片Go型別
- Golang 基礎學習之Go map操作Golang
- Go語言小知識之map遍歷Go