六. Go學習:map資料結構
阿新 • • 發佈:2020-12-23
技術標籤:Golang學習總結golang
目錄
map
一. map簡介
key-value的資料結構,又叫字典或關聯陣列。
宣告: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->類似於二維陣列。
二. map相關操作
宣告、插入、查詢、遍歷、刪除和長度。
package main import "fmt" func main() { var a map[string]string a = make(map[string]string, 10) a["hello"] = "world" //插入 fmt.Println(a) val, _ := a["hello"] //查詢 fmt.Println("value:", val) for k, v := range a { //遍歷 fmt.Println(k, v) } length := len(a) //長度 fmt.Println(length) delete(a, "hello") //刪除 fmt.Println(a) a["abc"] = "efg" //新增 a["abc1"] = "efg" a["abc2"] = "efg" fmt.Println(a) }
三. map為引用型別
由下面程式碼和結果可知:map為引用型別。
package main import "fmt" func modify(a map[string]map[string]string) { _, ok := a["zhangsan"] if !ok { a["zhangsan"] = make(map[string]string) } a["zhangsan"]["age"] = "21" return } func testMap() { a := make(map[string]map[string]string, 10) modify(a) fmt.Println(a) } func main() { testMap() }
四. Map的遍歷
package main
import "fmt"
func testMap() {
a := make(map[string]map[string]string, 10)
a["key1"] = make(map[string]string)
a["key1"]["key2"] = "one"
a["key1"]["key3"] = "two"
for k, v := range a {
fmt.Println(k)
for k1, v1 := range v {
fmt.Println(k1, v1)
}
}
}
func main() {
testMap()
}
五. map排序
先獲取所有key,把key進行排序;再按照排序好的key,進行遍歷。
package main
import (
"fmt"
"sort"
)
func testMapsort() {
a := make(map[int]int, 10)
a[1] = 2
a[5] = 5
a[3] = 10
a[8] = 4
fmt.Println(a)
var keys []int
for k, _ := range a {
keys = append(keys, k)
}
sort.Ints(keys)
for _, v := range keys {
fmt.Println(v, a[v])
}
}
func main() {
testMapsort()
}
六. slice of map
package main
import (
"fmt"
)
func testMap() {
var a []map[int]int
a = make([]map[int]int, 5)
for i := 0; i < 5; i++ {
a[i] = make(map[int]int)
}
a[0][0] = 0
a[0][1] = 1
a[1][0] = 2
fmt.Println(a)
}
func main() {
testMap()
}