Go(4 [Map])

25minutes發表於2021-09-09

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排序

  1. 先獲取所有key,把key排序

  2. 按照拍好序的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/,如需轉載,請註明出處,否則將追究法律責任。

相關文章