Go语言容器

Posted Go程序员开发

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Go语言容器相关的知识,希望对你有一定的参考价值。

Go语言容器

Map 是一种无序的键值对的集合。Map 最重要的一点是通过 key 来快速检索数据,key 类似于索引,指向数据的值。

Map 是一种集合,所以我们可以像迭代数组和切片那样迭代它。不过,Map 是无序的,我们无法决定它的返回顺序,这是因为 Map 是使用 hash 表来实现的。

键必须是支持相等运算符 ("=="、"!=") 类型, 如 number、string、 pointer、array、struct,以及对应的 interface。

值可以是任意类型,没有限制。

定义 Map

第一种,声明一个Map:

var m map[int]string

Map定义并初始化

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

第二种,通过make来创建Map

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

第三种,通过 := 语法来定义Map

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

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 不存在,不会出错。

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()方法。

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]stringfor cap


下一篇:

Go语言管道------敬请期待!

0基础学习Go语言系列:


看完本文有收获?那就分享给更多人吧~

长按二维码

以上是关于Go语言容器的主要内容,如果未能解决你的问题,请参考以下文章

Go语言开发Go语言内置容器

Go语言容器(container)

Go语言容器(container)

我的Go+语言初体验——在Docker建立一个可以用Go+语言开发的容器环境(以Ubuntu容器为例)

Go语言容器—数组切片

Go语言与Docker操作Redis