go map基础知识简单总结
2022/1/11 6:06:44
本文主要是介绍go map基础知识简单总结,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
什么是map?
在go中,map是将值(key)和建(value)关联的内置类型,通过相应的键可以获取到值。
声明:
func main() { var mapList map[string]int //fmt.Println(mapList) if mapList == nil { fmt.Println(mapList) } } // 声明 // key 是 string类型 // value 是 类型 // 变量名 mapList 的 map // 此时的mapList 是空的,默认值是 nil
初始化/创建:
// 声明后是无法使用的 // 添加key-value 会报异常 func main() { var mapList map[string]int mapList["a"] = 1 mapList["b"] = 2 mapList["c"] = 3 fmt.Println(mapList) } // 输出:panic: assignment to entry in nil map // 需要make去创建该map,也可以理解成初始化 func main() { var mapList map[string]int if mapList == nil{ mapList = make(map[string]int) } mapList["a"] = 1 mapList["b"] = 2 mapList["c"] = 3 fmt.Println(mapList) } // 输出:map[a:1 b:2 c:3] // 测试 func main() { var mapList map[string]int if mapList == nil{ mapList = make(map[string]int) } mapList[""] = 1 // "" 空字符也算一个元素 mapList[""] = 4 // 重复会覆盖,上一个 mapList["a"] = 2 mapList["a"] = 5 // 重复会覆盖,上一个 mapList["c"] = 3 fmt.Println(mapList) } // 输出:map[:4 a:5 c:3]
创建时初始化
// 声明时初始化 mapListTwo := map[string]int{ "string":100, "":110, "go":120, } fmt.Println(mapListTwo)
获取元素
// 获取元素 str := mapList["a"] fmt.Println(str,mapList[""],mapList["66"]) // 输出:5 4 0 // 当获取元素是map不存在拿到的就是value类型的默认值 // 声明时初始化 mapListTwo := map[string]string{ "string":"100", "":"110", "go":"120", } mapListOne := map[string]int{ "string":100, "":110, "go":120, } // 获取元素 str := mapListTwo["a"] if str == "" { fmt.Println("str :",str ) } stri := mapListOne["a"] if stri == 0 { fmt.Println("stri :",stri ) } // 输出:str : // 输出:stri : 0
判断元素是否存在map中
// 判断一个元素是否存在map中 func main() { mapListOne := map[string]int{ "string":100, "":110, "go":120, } // 判断一个元素是否存在map中 value,ok := mapListOne["string"] if ok == true { fmt.Println("string : ",value,ok) } values,oks := mapListOne["java"] if oks { fmt.Println("java is ture: ",values,oks) } else { fmt.Println("java is false: ",values,oks) } } // 输出: // string is true: 100 true // java is false: 0 false
遍历map中的所有元素:for range (使用时不能保证每次执行程序获取的元素顺序都相同)
func main() { // 声明&初始化 mapList var mapList map[string]int mapList = make(map[string]int) mapList["string"] = 100 mapList["java"] = 200 mapList["go"] = 300 // 声明初始化 simpleMap simpleMap := map[string]string{ "JSON":"JSON", "java":"java", } // 遍历 map (key,value,ok|遍历和判断是否存在元素) for key,value := range simpleMap { fmt.Printf("simpleMap[%s] = %s \n",key,value) } for key,value := range mapList { fmt.Printf("mapList[%s] = %d \n",key,value) } } // 输出两次执行结果: // simpleMap[JSON] = JSON simpleMap[JSON] = JSON // simpleMap[java] = java simpleMap[java] = java // mapList[string] = 100 mapList[java] = 200 // mapList[java] = 200 mapList[go] = 300 // mapList[go] = 300 mapList[string] = 100
删除map中的元素
func main() { //删除map中的元素 mapList := map[string]int{ "string":1000, "go":2000, "map":3000, } fmt.Println("mapList all ",mapList," length is ",len(mapList)) delete(mapList,"map") fmt.Println("mapList deletion all ",mapList,"length is ",len(mapList)) } // 输出: // mapList all map[go:2000 map:3000 string:1000] length is 3 // mapList deletion all map[go:2000 string:1000] length is 2
map 是引用类型,对map元素的改变即在改变这个map,且这个修改是显性的。
map 类型之间不能使用==
符判断,==
是能用来判断该map是否初始化为nil
。
map声明后必须要初始化才可以使用。
key必须是支持==或!=比较运算的类型(其类型的默认值也可以当作一个key),不可以是函数、map或slice。
使用for range 遍历时是无序的
这篇关于go map基础知识简单总结的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-10-012024年每个初学者都应该知道的Django十大技巧
- 2024-09-30云原生周刊:Argo CD v2.13 发布候选版本丨2024.9.30
- 2024-09-29哪个更快:OpenAI Whisper、Google TTS 还是 Piper TTS??
- 2024-09-29MLOps 端到端系统在 Google 云平台(I):赋能预测解决方案
- 2024-09-26通过 gcloud CLI 认证从本地脚本写入 Google Sheets
- 2024-09-24GoLand 新建项目 Enable vendoring support automatically 的作用是什么?-icode9专业技术文章分享
- 2024-09-21MongoDB资料:新手入门与初级应用指南
- 2024-09-20MongoDB教程:初学者必备指南
- 2024-09-05MongoDB入门:快速掌握NoSQL数据库基础
- 2024-08-28go 项目中怎么打印调试-icode9专业技术文章分享