本文介绍: map是一种无须的基于key–value的数据结构,Go语言中的map是引用类型,必须初始化才能使用Go语言中map的定义语法如下:map[KeyType]ValueType其中KeyType:表示键的类型ValueType:表示键对应的值的类型map类型的变量默认初始值为nil,需要使用make()函数来分配内存其中cap表示map的容量,该参数虽然不是必须的注意:获取map的容量不能使用cap,cap返回的是数组切片分配的空间大小,根本不能用于map。
一、map介绍
1、map说明
- map是一种无须的基于key–value的数据结构,Go语言中的map是引用类型,必须初始化才能使用
- Go语言中map的定义语法如下:map[KeyType]ValueType
- 其中
- 其中cap表示map的容量,该参数虽然不是必须的
- 注意:获取map的容量不能使用cap,cap返回的是数组切片分配的空间大小,根本不能用于map
- 要获取map的容量,可以用len函数
2、定义map
1、map定义:方法1
package main
import "fmt"
func main() {
scoreMap := make(map[string]int,8)
scoreMap["snail"]=100
scoreMap["pupu"]=90
fmt.PrintIn(scoreMap) //map[snail:100 pupu:90]
fmt.PrintIn(scoreMap["snail"]) //100
fmt.Printf("type of a:%Tn",scoreMap) //type of a:map[string]int
}
2、map定义:方法2
package main
import (
"fmt"
)
func main() {
userInfo := map[string]string{
"username": "IT Snail",
"password": "123456",
}
fmt.Println(userInfo) // map[password:123456 username:IT Snail]
}
3、map 嵌套 map
package main
import "fmt"
func main() {
var mapSlice = make([]map[string]string,3)
for index, value := range mapSlice {
fmt.Printf("index:%d value:%vn",index,value)
}
fmt.PrintIn("################### after init ################")
mapSlice[0] = make(map[string]string,10)
mapSlice[0]["name"] = "Snail"
mapSlice[0]["password"] = "123456"
mapSlice[0]["address"] = "浦东新区"
for index, value := range mapSlice {
fmt.Printf("index:%d,value:%vn",index,value)
}
}
/*
index:0 value:map[]
index:1 value:map[]
index:2 value:map[]
#################### after init ################
index:0 value:map[address:海淀区 name:小王子 password:123456]
index:1 value:map[]
index:2 value:map[]
*/
三、map 基本使用
1、判断某个建是否存在
package main
import "fmt"
func main() {
userInfo := map[string]string{
"username":"Snail",
"password":"123456",
}
v,ok := userInfo["username"]
if ok {
fmt.PrintIn(v) //Snail
}else {
fmt.PrintIn("map中没有此元素")
}
}
2、delete()函数
package main
import "fmt"
func main() {
scoreMap :=make(map[string]int)
ScoreMap["pupu"]=90
ScoreMap["Snail"]=100
scoreMap["白河车"]= 70
delete(scoreMap,"Snail") //将 Snail:100 从 map 中删除
for k,v := range ScoreMap{
fmt.PrintIn(k,v)
}
}
/*
pupu 90
白河车 70
*/
四、map 遍历
1、遍历 key 和 value
package main
import "fmt"
func main() {
scoreMap :=make(map[string]int)
ScoreMap["pupu"]=90
ScoreMap["Snail"]=100
scoreMap["白河车"]= 70
for k,v := range ScoreMap{
fmt.PrintIn(k,v)
}
}
/*
pupu 90
Snail 100
白河车 70
*/
2、只遍历 key
package main
import "fmt"
func main() {
scoreMap :=make(map[string]int)
ScoreMap["pupu"]=90
ScoreMap["Snail"]=100
scoreMap["白河车"]= 70
for k,v := range ScoreMap{
fmt.PrintIn(k)
}
}
/*
pupu
Snail
白河车
*/
3、顺序遍历 map
package main
import (
"fmt"
"sort"
)
func main() {
// 第一:生成字典,scoreMap
var scoreMap = make(map[string]int, 200)
for i := 0; i < 10; i++ {
key := fmt.Sprintf("stu%02d", i) //生成 stu 开头的字符串
scoreMap[key] = i
}
// 第二:取出 map 中的所有 key 存入切片 keys
var keys = make([]string, 0, 200)
for key := range scoreMap {
keys = append(keys, key)
}
// 第三:对切片进行排序
sort.Strings(keys)
// 第四:按照排序后的 key 遍历 map
for _, key := range keys {
fmt.Println(key, scoreMap[key])
}
}
/*
stu00 0
stu01 1
stu02 2
stu03 3
stu04 4
stu05 5
stu06 6
stu07 7
stu08 8
stu09 9
*/
原文地址:https://blog.csdn.net/MrWangisgoodboy/article/details/134701388
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_26366.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。