Go語言容器

Map 是一種無序的鍵值對的集合。Map 最重要的一點是經過 key 來快速檢索數據,key 相似於索引,指向數據的值。數組

 

Map 是一種集合,因此咱們能夠像迭代數組和切片那樣迭代它。不過,Map 是無序的,咱們沒法決定它的返回順序,這是由於 Map 是使用 hash 表來實現的。spa

 

鍵必須是支持相等運算符 ("=="、"!=") 類型, 如 number、string、 pointer、array、struct,以及對應的 interface。code

值能夠是任意類型,沒有限制。blog

定義 Map

第一種,聲明一個Map:索引

var m map[int]string

Map定義並初始化string

var m1 map[int]string = map[int]string{0: "Linux", 1: "Python"}
var m2 = map[int]string{0: "Java", 1: "Golang"}

第二種,經過make來建立Maphash

var m1 map[int]string = make(map[int]string, 10)
var m2 = make(map[int]string, 10)

第三種,經過 := 語法來定義Map編譯

m1 := map[int]string{}
m2 := make(map[int]string, 10)

Map操做

插入操做:

package main

import "fmt"

func main() {
    m := map[string]string{"key0": "Linux", "key1": "Python"}
    fmt.Printf("插入前:map m : %v\n", m)
    m["key2"] = "oldboy"
    fmt.Printf("插入後:map m : %v\n", m)
}

更新操做:

package main

import "fmt"

func main() {
    m := map[string]string{"key0": "Linux", "key1": "Python"}
    fmt.Printf("更新前:map m : %v\n", m)
    m["key1"] = "Golang"
    fmt.Printf("更新後:map m : %v\n", m)
}

查找操做:

package main

import "fmt"

func main() {
    m := map[string]string{"key0": "Linux", "key1": "Python"}
    val, ok := m["key0"]
    if ok {
        fmt.Printf("查找操做:key0 => %v\n", val)
    }
}

刪除操做:

package main

import "fmt"

func main() {
    m := map[string]string{"key0": "Linux", "key1": "Python"}
    fmt.Printf("刪除前:map m : %v\n", m)
    delete(m, "key1")
    fmt.Printf("刪除後:map m : %v\n", m)
}

刪除操做,若是 key 不存在,不會出錯。class

package main

import "fmt"

func main() {
    m := map[string]string{"key0": "Linux", "key1": "Python"}
    fmt.Printf("刪除前:map m : %v\n", m)
    delete(m, "key10")
    fmt.Printf("刪除後:map m : %v\n", m)
}

求長度:

package main

import "fmt"

func main() {
    m := map[string]string{"key0": "Linux", "key1": "Python"}
    len := len(m)
    fmt.Printf("map m 長度: %v\n", len)
}

注意:不能夠在map上使用cap()方法。import

package main

import "fmt"

func main() {
    m := map[string]string{"key0": "Linux", "key1": "Python"}
    cap := cap(m)
    fmt.Printf("map's cap is %v\n", cap)
}

編譯錯誤:

./main.go:7:12: invalid argument m (type map[string]string) for cap
相關文章
相關標籤/搜索