一、map 详解
make
创建 map 类型的数据:
package main
import (
"fmt"
)
func main() {
var userinfo = map[string]string{
"username": "张三",
"age": "20",
"sex": "男", //这也要写,
}
fmt.Println(userinfo)
}
输出:
map[age:20 sex:男 username:张三]
for range
循环遍历 map 类型的数据。
map 类型数据的 curd
package main
import (
"fmt"
)
func main() {
// 创建 map 类型的数据
var userinfo = make(map[string]string)
userinfo["username"] = "张三"
userinfo["age"] = "20"
fmt.Println(userinfo)
// 修改 map 类型的数据
userinfo["username"] = "李四"
fmt.Println(userinfo)
// 查找 map 类型的数据
v, ok := userinfo["age"]
fmt.Println(v, ok)
// 删除 map 类型的数据
delete(userinfo, "age")
fmt.Println(userinfo)
}
输出:
map[age:20 username:张三]
map[age:20 username:李四]
20 true
map[username:李四]
map 和切片结合
package main
import (
"fmt"
)
func main() {
var userinfo = make(map[string][]string) // 切片 []string 是一个整体
userinfo["hobby"] = []string{
"吃饭",
"睡觉",
"敲代码",
}
userinfo["work"] = []string{
"php",
"golang",
"python",
}
for k, v := range userinfo {
fmt.Println(k, v)
for _, value := range v {
fmt.Println(value)
}
}
}
输出:
hobby [吃饭 睡觉 敲代码]
吃饭
睡觉
敲代码
work [php golang python]
php
golang
python
map 类型也是引用数据类型,改变变量副本值会影响变量本身的值。
二、map 的排序
package main
import (
"fmt"
"sort"
)
func main() {
map1 := make(map[int]int, 10)
map1[10] = 100
map1[1] = 13
map1[4] = 56
map1[8] = 90
for key, val := range map1 {
fmt.Println(key, val)
}
//按照 key 升序输出 map 的 key=>value
//1、把 map 的 key 放在切片里面
var keySlice []int
for key, _ := range map1 {
keySlice = append(keySlice, key)
}
fmt.Println(keySlice)
//2、让 key 升序排序
sort.Ints(keySlice)
fmt.Println(keySlice)
//3、循环遍历 key 输出 map 的值
for _, v := range keySlice {
fmt.Printf("key=%v value=%v\n", v, map1[v])
}
}
输出:
4 56
10 100
1 13
8 90
[4 10 1 8]
[1 4 8 10]
key=1 value=13
key=4 value=56
key=8 value=90
key=10 value=100
map 实例:计数统计
package main
import (
"fmt"
"strings"
)
func main() {
var str = "how do you do"
var strSlice = strings.Split(str, " ")
fmt.Println(strSlice)
var strMap = make(map[string]int)
for _, v := range strSlice {
strMap[v]++
}
fmt.Println(strMap)
}
输出:
[how do you do]
map[do:2 how:1 you:1]
三、参考教程
有疑问加站长微信联系(非本文作者)