go语言学习(map)
map初始化定义packagemainimportfmtfuncmain(){//标准定义varnameMapmap[string]stringmap[string]string{1:张三,2:李四,3:王五,}fmt.Println(nameMap)//map[1:张三 2:李四 3:王五]//声明并赋值varnameMap1map[string]string{}fmt.Println(nameMap1)//map[]//简短声明nameMap2:map[string]string{}fmt.Println(nameMap2)//map[]//make函数初始化nameMap3:make(map[string]string)fmt.Println(nameMap3)//map[]}注意go语言中map定义时必须初始化否则后续使用会报错varnameMap4map[string]stringnameMap4[name]123//报错panic: assignment to entry in nil mapfmt.Println(nameMap4)这只声明了一个map变量但没有初始化此时aMap的值是nil零值向nil的map赋值会导致运行时panic这里简单提一嘴go语言中map底层的数据结构是哈希表。map取值直接使用[]就可获取对于key的valuevarnameMapmap[string]stringmap[string]string{1:张三,2:李四,3:王五,}fmt.Println(nameMap)//map[1:张三 2:李四 3:王五]fmt.Println(nameMap[2])//李四如果访问一个不存在的key会怎么样varnameMapmap[string]stringmap[string]string{1:张三,2:李四,3:王五,}fmt.Println(nameMap)//map[1:张三 2:李四 3:王五]fmt.Println(nameMap[2])//李四fmt.Printf(%#v\n,nameMap[4])//注意当访问一个不存在的key时是不会像C一样往里面插入的。那如果我的map里面本来就有一个key对于的value是空字符串该如何区分呢varnameMapmap[string]stringmap[string]string{1:张三,2:李四,3:王五,4:,}tmp1,ok1:nameMap[4]fmt.Printf(%#v\n,tmp1)//fmt.Println(ok1)//truetmp2,ok2:nameMap[5]fmt.Printf(%#v\n,tmp2)//fmt.Println(ok2)//false如上所示map的[]是有两个返回值的第一个返回值会返回对于key的value第二个会返回这个key是否存在的bool值。