package main
import "fmt"
/*
map 是引用类型
var name = map[keyType]valueType
map的key的类型:
可以是多种类型,比如 bool,数组,string,指针,channel(管道) 大部分都是int活着string类型
使用说明:
1.使用前要make
2.key重复后者会覆盖前者
*/
//map切片 切片的数据类型是map就称为是map切片 ,则map的个数就可以动态变化了
func mapSlice() {
//声明map切片
monster := make([]map[string]string, 1)
monster[0] = make(map[string]string)
monster[0]["2"] = "2"
monster[0]["24"] = "24"
monster[0]["1"] = "1"
//声明一个新map
newMap := map[string]string{"1": "1"}
//将map添加到切片中
monster = append(monster, newMap)
fmt.Println("map切片是:", monster)
}
func main() {
//map声明,这个时候是没有分配数据空间的
var a map[string]string
//在使用前要先分用make来分配数据空间
a = make(map[string]string, 10)
a["name"] = "宋江" //如果key重复后者会覆盖前者
fmt.Println(a)
mapUse()
exercise()
mapSlice()
}
//map的声明方式
func mapUse() {
//方式一
var a map[string]string
//在使用前要先分用make来分配数据空间
a = make(map[string]string, 10)
fmt.Println(a)
//方式二 推荐这种 比较清晰
cities := make(map[string]string)
cities["no1"] = "北京"
fmt.Println(cities["no1"])
//方式二
heroes := map[string]string{"heroes1": "宋江", "heroes2": "卢俊义"}
fmt.Println(heroes)
}
func exercise() {
// map key是string 值有事map类型 这就是二维的了
student := make(map[string]map[string]string)
//只要使用到map就必须要make!!!!!!~~~~~~~~~~~~~~~~~~~~~~~~
student["stu1"] = make(map[string]string)
student["stu1"]["name"] = "tom"
student["stu1"]["age"] = "20"
//查找 并判断有没有这个值
v, ok := student["stu1"]
if ok {
fmt.Println("有stu1这个值 值是:", v)
} else {
fmt.Println("没有stu1这个值")
}
fmt.Println(student)
//map删除
delete(student, "stu1") //map变量名称,key值
fmt.Println(student)
}