一 点睛
切片的数据类型如果是 map,称为 slice of map,map 切片,这样使用则 map 个数就可以动态变化了。
二 实战
1 要求
使用一个 map 来记录 monster 的信息 name 和 age, 也就是说一个 monster 对应一个 map,并且妖怪的个数可以动态的增加。
2 思路
使用 map 切片。
3 代码
package main
import (
"fmt"
)
func main() {
// 演示 map 切片的使用
/*
要求:使用一个 map 来记录 monster 的信息 name 和 age, 也就是说一个 monster 对应一个 map,并且妖怪的个数可以动态的增加。
*/
// 1 声明一个map切片
var monsters []map[string]string
monsters = make([]map[string]string, 2) // 准备放入两个妖怪
// 2 增加第一个妖怪的信息
if monsters[0] == nil {
monsters[0] = make(map[string]string)
monsters[0]["name"] = "牛魔王"
monsters[0]["age"] = "500"
}
// 3 增加第二个妖怪的信息
if monsters[1] == nil {
monsters[1] = make(map[string]string)
monsters[1]["name"] = "玉兔精"
monsters[1]["age"] = "400"
}
// 下面这个写法越界
// if monsters[2] == nil {
// monsters[2] = make(map[string]string, 2)
// monsters[2]["name"] = "狐狸精"
// monsters[2]["age"] = "300"
// }
// 如果要增加 monster。
// 需要使用到切片的 append 函数,它可以动态的增加 monster
// 1 先定义1个 monster 信息
newMonster := map[string]string{
"name": "新的妖怪~火云邪神",
"age": "200",
}
// 通过 append 追加
monsters = append(monsters, newMonster)
fmt.Println(monsters)
}
4 测试
[map[name:牛魔王 age:500] map[name:玉兔精 age:400] map[name:新的妖怪~火云邪神 age:200]]