美文网首页
08 | 映射

08 | 映射

作者: 刀斧手何在 | 来源:发表于2020-03-21 18:16 被阅读0次

    映射是无序集合,无序的原因是映射的实现使用来散列表

    • 声明
    func TestMap(t *testing.T){
         var m map[int]string
         //m[0] = "hello" //assignment to entry in nil map
         t.Log(m,reflect.TypeOf(m))
    }
    //result : map[]  map[int]string
    
    func TestMap(t *testing.T){
         m := map[int]string{1:"hello"}
         t.Log(m,reflect.TypeOf(m))
    }
    //result: map[1:hello] map[int]string
    
    func TestMap(t *testing.T){
         m := make(map[int]string)
         m[2] = "hello"
         t.Log(m,reflect.TypeOf(m))
    }
    //result: map[2:hello] map[int]string
    
    • 空映射与nil映射
    func TestMap(t *testing.T){
         var m map[int]string
         m1 := map[int]string{}
         m2 := make(map[int]string)
         t.Log(m,reflect.TypeOf(m))
         t.Log(m1,reflect.TypeOf(m1))
         t.Log(m2,reflect.TypeOf(m2))
    }
    //m1 ,m2 空映射 允许赋值
    //m => nil 映射 赋值出错
    
    • 映射是引用类型
      在函数间传递映射并不会制造一个副本。在函数内对映射做来修改,所有对映射的引用都会察觉这个修改

    • map实现工厂模式

    • map实现set

    • sync.Map
      Go语言中的 map 在并发情况下,只读是线程安全的,同时读写是线程不安全的

    相关文章

      网友评论

          本文标题:08 | 映射

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