• 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]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
    ", m)
        m["key2"] = "oldboy"
        fmt.Printf("插入后:map m : %v
    ", m)
    }

    更新操作:

    package main
    
    import "fmt"
    
    func main() {
        m := map[string]string{"key0": "Linux", "key1": "Python"}
        fmt.Printf("更新前:map m : %v
    ", m)
        m["key1"] = "Golang"
        fmt.Printf("更新后:map m : %v
    ", 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
    ", val)
        }
    }

    删除操作:

    package main

    import "fmt"

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

    删除操作,如果 key 不存在,不会出错。

    package main
    
    import "fmt"
    
    func main() {
        m := map[string]string{"key0": "Linux", "key1": "Python"}
        fmt.Printf("删除前:map m : %v
    ", m)
        delete(m, "key10")
        fmt.Printf("删除后:map m : %v
    ", m)
    }

    求长度:

    package main
    
    import "fmt"
    
    func main() {
        m := map[string]string{"key0": "Linux", "key1": "Python"}
        len := len(m)
        fmt.Printf("map m 长度: %v
    ", 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
    ", cap)
    }

    编译错误:

    ./main.go:7:12: invalid argument m (type map[string]string) for cap
  • 相关阅读:
    Arduino101学习笔记(十三)—— 101六轴传感器
    Arduino101学习笔记(十二)—— 101定时器中断
    Arduino101学习笔记(十一)—— 蓝牙BLE
    Arduino101学习笔记(十)—— 串口通信
    Arduino101学习笔记(九)—— 中断函数
    Arduino101学习笔记(八)—— 函数库
    Arduino101学习笔记(七)—— 时间API
    [mount]linux 挂载时 mount: wrong fs type, bad option, bad superblock on /dev/sdb
    [sed]字符串替换
    [net]netcat 做网络端口监听
  • 原文地址:https://www.cnblogs.com/jiangchunsheng/p/10753265.html
Copyright © 2020-2023  润新知