GO map

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)
}

  

posted @ 2021-05-23 14:46  不吃肉的羊  阅读(58)  评论(0编辑  收藏  举报