maps

2019-06-11 16:32:51 浏览数 (1)

本节学习目标

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

下面开始学习

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

  • 2.如何创建map

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

代码语言:javascript复制
personSalary := make(map[string]int)

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

代码语言:javascript复制
 var personSalary map[string]int

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

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

代码语言:javascript复制
   var json1 map[string]int
    if(json1 == nil){
        fmt.Println("空")
   }

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


  • 3.给map添加值

声明的时候初始化 map

代码语言:javascript复制
package main
import (  
    "fmt"
)

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

map 添加了几个新元素

代码语言:javascript复制
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] 。

代码语言:javascript复制
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值

代码语言:javascript复制
value, ok := map[key]

遍历map

代码语言:javascript复制
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] = %dn", key, value)
    }

}

  • 5.删除map中的值
代码语言:javascript复制
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的长度
代码语言:javascript复制
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来判断

0 人点赞