Skip to content

Latest commit

 

History

History
60 lines (51 loc) · 1.54 KB

11.md

File metadata and controls

60 lines (51 loc) · 1.54 KB

map

map操作:

  • 创建map
    • map[key]value
    • map[key1]map[key2] value
    • make(map[string]int)
  • 获取元素:m[key]
  • key不存在时,获得value类型的初始值0
  • value, ok := m[key]来判断是否存在key
  • delete删除一个key
  • 使用range遍历key,或者遍历key, value
  • 不保证遍历顺序,如需顺序,需手动对key排序
  • 使用len来获得元素个数
  • map使用哈希表,必须可以比较相等
  • 除了slice, map, function对内建类型都可以作为key
  • Struct类型不包含上述字段,也可以作为key
package main
import "fmt"

func main() {
    m := map[string]string{
        "name": "ccmouse",
        "course": "golang",
        "site": "imooc",
        "quality": "notbad",
    }

    m2 := make(map[string]int) // m2 == empty map
    var m3 map[string]int // m3 == nil
    fmt.Println("m, m2, m3:")
    fmt.Println(m, m2, m3)

    fmt.Println("Traversing map m")
    for k, v := range m {
        fmt.Println(k, v)
    }

    fmt.Println("Getting values")
    courseName := m["course"]

    fmt.Println(`m["course"] =`, courseName)
    if causeName, ok := m["cause"]; ok {
        fmt.Println(causeName)
    } else {
        fmt.Println("key 'cause' does not exist")
    }

    // Deleting values
    fmt.Println("Deleting values")
    name, ok := m["name"]
    fmt.Printf("m[%q] before delete: %q, %v\n", "name", name, ok)

    delete(m, "name")
    name, ok = m["name"]
    fmt.Printf("m[%q] after delete: %q, %v\n", "name", name, ok)
}