談一談Go的Map的使用用法

2021-08-13 10:16:08 字數 4164 閱讀 4800

寫法一:

package main

import "fmt"

func main()

輸出

97

寫法二:

package main

import "fmt"

func main() //或者這樣寫也可以

//然後賦值

m1["name"] = "go"

m1["age"] = "age"

fmt.println(m1)

fmt.println(m1["name"])

fmt.println(m1["age"])

}

輸出:

map[name:go age:age]

goage

寫法三:

初始化+賦值

package main

import "fmt"

func main() //注意該花括號不能獨自寫一行,會報錯syntax error: unexpected newline, expecting comma or }

fmt.println(m1)

fmt.println(m1["name"])

fmt.println(m1["age"])

}

輸出:

map[name:go age:8]

go8

遍歷map方法一

package main

import "fmt"

func main()

for k := range m1

}

輸出:

fine的值為language

one的值為go

two的值為is

three的值為a

four的值為programing

遍歷map方法二

package main

import "fmt"

func main()

for k, v := range m1

}

輸出:

//因為是無序的,每次執行輸出的結果都不一樣

鍵名為:fine, 鍵值為:language

鍵名為:one, 鍵值為:go

鍵名為:two, 鍵值為:is

鍵名為:three, 鍵值為:a

鍵名為:four, 鍵值為:programing

鍵名為:two, 鍵值為:is

鍵名為:three, 鍵值為:a

鍵名為:four, 鍵值為:programing

鍵名為:fine, 鍵值為:language

鍵名為:one, 鍵值為:go

查詢鍵值是否存在

package main

import "fmt"

func main()

//檢視元素是否在map中,變數 is_exist 會返回true或者false,當查詢的key在map中則返回true

if _, is_exist := m1["six"]; is_exist else

}

輸出:

m1["six"]不存在m1裡。

delete函式的使用

package main

import "fmt"

func main()

a := m1["one"]

delete(m1, "one") //delete() 函式用於刪除集合的元素, 引數為 map 和其對應的 key

fmt.println(a)

fmt.println(m1) //成功刪除m1["one"]

}

輸出:

go

map[two:is three:a four:programing fine:language]

多返回值

package main

import "fmt"

func main()

輸出:

true 1111

package main

import "fmt"

func main()

輸出:

false

多返回值的使用

package main

import "fmt"

func main()

m1[2][1] = "good"

a, ok = m1[2][1]

fmt.println(ok, a)

}

輸出:

false

true good

map的迭代

package main

import "fmt"

func main()

//所以這裡打出來的還是空的map

fmt.println(sm)

}

輸出:

map[1:go]

map[1:go]

map[1:go]

map[1:go]

map[1:go]

[map map map map map]

package main

import "fmt"

func main()

//sm值已經改變了

fmt.println(sm)

}

輸出:

map[1:go]

map[1:go]

map[1:go]

map[1:go]

map[1:go]

[map[1:go] map[1:go] map[1:go] map[1:go] map[1:go]]

如何對無序的map進行間接排序?

package main

import (

"fmt"

"sort"

)func main()

s := make(int, len(m))

i := 0

//對map的排序其實就是對key的排序

for k, _ := range m

sort.ints(s) //對int型進行排序,可知slice是引用型別,因為排序完沒有返回值,而只是把s傳進去排序

fmt.println(s)

for i := range s

}

輸出:

[1 2 3 4 5]

m[" 0 "] + 鍵值為:a

m[" 1 "] + 鍵值為:b

m[" 2 "] + 鍵值為:c

m[" 3 "] + 鍵值為:d

m[" 4 "] + 鍵值為:e

go裡面如何實現key和value對調?

package main

import (

"fmt"

)func main()

m2 := map[string]int{}

fmt.println(m)

for k, v := range m

fmt.println(m2)

}

輸出:

map[1:a 2:b 3:c 4:d 5:e]

map[e:5 a:1 b:2 c:3 d:4]

map的常用用法詳解

map翻譯為對映,也是常用的stl容器。眾所周知,在定義陣列時 如 int array l00 其實是定義了乙個從int型到int型的對映,比如array 0 25 array 4 36就分別是將0對映到25 將4對映到36。乙個 double型陣列則是將int型對映到double型,例如db 0 ...

談一談C 的事件

c 中事件基於委託,要理解事件要先理解委託,如果覺得自己關於委託不是很了解可以看看我前面寫委託的文章 使用委託時,一般會出現兩種角色 廣播者 發布者 和訂閱者,這是乙個非常常見的模型 using system class program 定義 發布 委託 public delegate void p...

6 4 map的常用用法

map翻譯為對映,也是常用的stl容器,在使用map時,需要新增map標頭檔案,include。1,map的定義 mapmp,typename1是對映前的型別 鍵key typename2是對映後型別 值value 如 mapmp,是int型對映到int型,另外map的鍵和值也可以是stl容器,例如...