• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

GO语言MAP

武飞扬头像
帅气的梧桐述
帮助1

Map初始化

  1.  
    func TestInitMap(t *testing.T) {
  2.  
    m1 := map[string]int{"a": 1, "b": 2, "c": 3}
  3.  
    t.Log(m1["a"])
  4.  
    t.Logf("m1 len=%d", len(m1))
  5.  
    m2 := map[string]string{}
  6.  
    //key不存在会赋默认值
  7.  
    t.Log(m2["a"])
  8.  
    t.Logf("m2 len=%d", len(m2))
  9.  
    m3 := make(map[string]int, 10)
  10.  
    m3["d"] = 1111
  11.  
    t.Logf("m3 len=%d", len(m3))
  12.  
    }

 未初始化map不能赋值

  1.  
    package main
  2.  
     
  3.  
    import "fmt"
  4.  
     
  5.  
    type Vertex struct {
  6.  
    X int
  7.  
    Y int
  8.  
    }
  9.  
     
  10.  
    func main() {
  11.  
    var Asset map[string] Vertex
  12.  
    Asset["abc"] = vertex
  13.  
    fmt.Println(Asset["abc"])
  14.  
    }

编译时报错:panic: assignment to entry in nil map

正常的示例

  1.  
    package main
  2.  
     
  3.  
    import "fmt"
  4.  
     
  5.  
    type Vertex struct {
  6.  
    X int
  7.  
    Y int
  8.  
    }
  9.  
     
  10.  
    func main() {
  11.  
    var Asset map[string] Vertex
  12.  
    Asset = make(map[string] Vertex)
  13.  
    Asset["abc"] = vertex
  14.  
    fmt.Println(Asset["abc"])
  15.  
    }
学新通

map的增删改查

  1.  
    package main
  2.  
     
  3.  
    import "fmt"
  4.  
     
  5.  
    func main() {
  6.  
    m := make(map[string]int)
  7.  
     
  8.  
    m["Answer"] = 42 //初始化
  9.  
    fmt.Println("The value:", m["Answer"])
  10.  
     
  11.  
    m["Answer"] = 48 //修改值
  12.  
    fmt.Println("The value:", m["Answer"])
  13.  
     
  14.  
    delete(m, "Answer") //删除值
  15.  
    fmt.Println("The value:", m["Answer"])
  16.  
     
  17.  
    if m["Answer"] == 0 {
  18.  
    fmt.Println("不存在的key") //不能存在的key的值为0
  19.  
    }
  20.  
     
  21.  
    v, ok := m["Answer"] //通过双赋值检测某个键存在,如果 key 在 m 中, ok 为 true。否则, ok 为 false,并且 elem 是 map 的元素类型的零值。
  22.  
    fmt.Println("The value:", v, "Present?", ok)
  23.  
    }
学新通

map对于获取不存在的key的Value值时,不是nil,而是赋默认值。判断map中是否存在KEY的方法如下:

  1.  
    func TestMapKey(t *testing.T) {
  2.  
    m1 := map[string]int{"a": 1, "b": 2, "c": 3}
  3.  
    if value, ok := m1["d"]; ok {
  4.  
    t.Logf("Key 'a' value is %d", value)
  5.  
    } else {
  6.  
    t.Log("Key 'a' is not existing")
  7.  
    }
  8.  
    }

map实现工厂模式

  1.  
    func TestFuncValue(t *testing.T) {
  2.  
    mapf := map[string]func(op int) int{}
  3.  
    mapf["a"] = func(op int) int { return op }
  4.  
    mapf["b"] = func(op int) int { return op * op }
  5.  
    mapf["c"] = func(op int) int { return op * op * op }
  6.  
    t.Log(mapf["a"](2), mapf["b"](2), mapf["c"](2))
  7.  
    }

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgfhief
系列文章
更多 icon
同类精品
更多 icon
继续加载