04 map

map其实就像是一种映射,c里面的map,python的字典感觉

map一些简单的操作

通过make函数定义

var userinfo=make(map[string]string) 

中括号里的是键,外面的是值

//添加键值对
userinfo["username"]="张三"
userinfo["age"]="20"

当然也可以这样定义

var userinfo2=make(map[string]string){
"username":"zhangsan",
"age":"20",
}

map也是引用类型数据

判断某个键是否存在

v,ok:=userinfo["password"] //v是值,ok是bool类型

删除某个键

delete(userinfo,"username")

map类型的切片

var userList=make(map[string][string],3,3)//可以理解为userList里有三个map类型

if userList[0]!=nil{
userList[0]["username"]="张三",
userList[0]["age"]="20"
}
if userList[1]!=nil{
userList[0]["username"]="李四",
userList[0]["age"]="19"
}

image

for range 遍历

for _,v:=range userList{
for k,v1:=range v{
fmt.Printf("%v:%v",k,v1)
}
fmt.Println()
}

切片类型的map

var user1=make(map[string][]string)
user1["name"]=[]string{
"张三"
"李四"
}
user1["hobby"]=[]string{
"sleep",
"code",
}

forrange 遍历

for k,v:=range user1{
fmt.Printf("%v:",k)
for _,v1:=range v{
fmt.Printf("%v ",v1)
}
fmt.Println()
}
//hobby:sleep code
//name:张三 李四

统计一个句子单词出现的次数

var str="how do you want to do something"
str1:=strings.split(str," ")
var map1=make(map[string]int)
for _,v:=range str{
map1[v]++;
}
fmt.Print(map1)
//map[do:2 how:1 something:1 to:1 want:1 you:1]