08 | 映射

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

  • 声明
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 | 映射)