1、map的初始化
package main
import "fmt"
func main() {
var m map[int]string = map[int]string{1: "张三", 2: "李四", 3: "小红"}
m1 := map[int]string{}
m2 := make(map[string]int, 10)
m2["张三"] = 12
m2["李四"] = 13
fmt.Println(m)
fmt.Println(m1)
fmt.Println(m2)
fmt.Println("m2 len == ", len(m2)) //len()返回的是map中已有的键值对个数。
}
输出结果:
map[1:张三 2:李四 3:小红]
map[]
map[张三:12 李四:13]
m2 len == 2
2、map键与值
package main
import "fmt"
func main() {
var m map[int]string = map[int]string{1: "张三", 2: "李四", 3: "小红"}
fmt.Println(m[2])
value, ok := m[4]
if ok {
fmt.Println(value)
} else {
fmt.Println("不存在")
}
for key, value := range m {
fmt.Println("key == ", key, ", value == ", value)
}
}
输出结果:
李四
不存在
key == 1 , value == 张三
key == 2 , value == 李四
key == 3 , value == 小红
3、map通过key删除某个值
package main
import "fmt"
func main() {
var m map[int]string = map[int]string{1: "张三", 2: "李四", 3: "小红"}
delete(m, 2)
fmt.Println(m)
}
输出结果:
map[1:张三 3:小红]
4、map作为函数参数
package main
import "fmt"
func main() {
var m map[int]string = map[int]string{1: "张三", 2: "李四", 3: "小红"}
deleteMap(m)
printMap(m)
}
func printMap(m map[int]string) {
for v, k := range m {
fmt.Println(v, " ", k)
}
}
func deleteMap(m map[int]string) {
delete(m, 2)
}
输出结果:
1 张三
3 小红
5、案例
案例:通过键盘输入一个英文字符串 统计每个字母出现的次数
package main
import "fmt"
func main() {
var str string
fmt.Scan(&str)
//将字符串转成切片
slice := []byte(str)
//定义map进行数据存储
//map[字符]个数
m := make(map[byte]int)
//var ch byte
for i := 0; i < len(slice); i++ {
//ch = slice[i]
//m[ch] += 1
//将slice切片的中的元素作为m中的key
m[slice[i]]++
}
for k, v := range m {
fmt.Printf("%c:%d\n", k, v)
}
}
输入:asssxxsasa
结果:
a:3
s:5
x:2