maps

作者: 酷走天涯 | 来源:发表于2018-12-24 09:21 被阅读35次

    本节学习目标

    • 什么是map?
    • 如何创建map?
    • 给map添加元素
    • 获取map中的元素
    • 删除map中的元素
    • 获取map的长度
    • Map是引用类型
    • Map的相等性

    下面开始学习

    • 1.什么是map?
    map 是在 Go 中将值(value)与键(key)关联的内置类型。通过相应的键可以获取到值。
    

    • 2.如何创建map

    通过向 make 函数传入键和值的类型,可以创建 map。make(map[type of key]type of value) 是创建 map 的语法。

    personSalary := make(map[string]int)
    

    可以使用下面的方式创建吗?

     var personSalary map[string]int
    

    可以创建,但是如果你想personSalary 添加值的时候,go 会抛出一个panic ,但是第一种方式就不会出现这种异常

    你可以使用下面的方式验证一下 两个声明实际创建的值是什么值

       var json1 map[string]int
        if(json1 == nil){
            fmt.Println("空")
       }
    

    方式2 输入的是nil 方式1 不是nil


    • 3.给map添加值

    声明的时候初始化 map

    package main
    import (  
        "fmt"
    )
    
    func main() {  
        personSalary := map[string]int {
            "steve": 12000,
            "jamie": 15000,
        }
        personSalary["mike"] = 9000
        fmt.Println("personSalary map contents:", personSalary)
    }
    

    map 添加了几个新元素

    package main
    import (
        "fmt"
    )
    func main() {
        personSalary := make(map[string]int)
        personSalary["steve"] = 12000
        personSalary["jamie"] = 15000
        personSalary["mike"] = 9000
        fmt.Println("personSalary map contents:", personSalary)
    }
    

    • 4.获取 map 中的元素

    目前我们已经给 map 添加了几个元素,现在学习下如何获取它们。获取 map 元素的语法是 map[key] 。

    package main
    
    import (
        "fmt"
    )
    
    func main() {
        personSalary := map[string]int{
            "steve": 12000,
            "jamie": 15000,
        }
        personSalary["mike"] = 9000
        employee := "jamie"
        fmt.Println("Salary of", employee, "is", personSalary[employee])
    }
    

    检查map中是否存在某个key值

    value, ok := map[key]
    

    遍历map

    package main
    
    import (
        "fmt"
    )
    
    func main() {
        personSalary := map[string]int{
            "steve": 12000,
            "jamie": 15000,
        }
        personSalary["mike"] = 9000
        fmt.Println("All items of a map")
        for key, value := range personSalary {
            fmt.Printf("personSalary[%s] = %d\n", key, value)
        }
    
    }
    

    • 5.删除map中的值
    package main
    
    import (  
        "fmt"
    )
    
    func main() {  
        personSalary := map[string]int{
            "steve": 12000,
            "jamie": 15000,
        }
        personSalary["mike"] = 9000
        fmt.Println("map before deletion", personSalary)
        delete(personSalary, "steve")
        fmt.Println("map after deletion", personSalary)
    
    }
    

    • 6.获取map的长度
    package main
    
    import (
        "fmt"
    )
    
    func main() {
        personSalary := map[string]int{
            "steve": 12000,
            "jamie": 15000,
        }
        personSalary["mike"] = 9000
        fmt.Println("length is", len(personSalary))
    
    }
    

    len 是内置函数

    • 7.map 判断

    两个map 判等,需要逐个判断每个字段是否相等,但是如果判断map是否等于nil,可以直接使用map==nil来判断

    相关文章

      网友评论

          本文标题:maps

          本文链接:https://www.haomeiwen.com/subject/ixqyzftx.html