go内建容器-Map

1.基础定义

golang中的map如同它的函数一样"纯粹",map就是用来存储键值对的容器,别管什么哈希不哈希的(底层已实现),用就行

//创建一个map
m := map[string]string{
	"name":  "Tony",
	"age":   "22",
	"title": "FashionDirector",
}  
//复合map
mm := make(map[string]map[string]string) //make出来的mm == empty
var mm1 map[string]map[string]string  //直接var出来的mm1 == nil,使用时需要用'make()'初始化
//取值
m["name"]	

2.特性和操作

由于底层实际是HashMap,所以遍历出来的结果是'无序'的

取值时,如果key不存在,那么会得到value的变量类型初始值

在'buildin.go'中提供(内置)了'delete(m map[Type]Type1, key Type)'函数来删除map中的值

m := map[string]string{
	"name":  "Tony",
	"age":   "22",
	"title": "FashionDirector",
}  
//value为"",ok为false
value,ok := m["alias"]
//删除值
delete(m,"age")

测试代码

package main
import "fmt"
func testMap() {
	//单map
	m := map[string]string{
		"name":  "Tony",
		"age":   "22",
		"title": "FashionDirector",
	}
	//复合map
	mm := make(map[string]map[string]string) //make出来的mm == empty
	mm["The Fashion World"] = m
	var mm1 map[string]map[string]string  //直接var出来的mm1 == nil,使用时需要用'make()'初始化
	//直接使用会造成runtime panic:assignment to entry in nil map
	//mm1["The New York International"] = m
	mm1= make(map[string]map[string]string )
	if mm1["The New York International"] == nil {
		mm1["The New York International"] = make(map[string]string)
	}
	mm1["The New York International"]["name"] = "Kevin"
	//取值
	fmt.Println(m)
	fmt.Println(mm)
	fmt.Println(mm["The Fashion World"]["name"])
	fmt.Println(mm1)
	//验证key是否存在
	if value,ok := mm1["The New York International"]["age"];ok{
		fmt.Println(value)
	}else {
		fmt.Println("The key not exist")
	}
	//遍历map
	for k,v := range m{
		fmt.Println(k,v)
	}
	//删除key-value
	value,ok := m["age"]
	fmt.Println(value,ok)
	delete(m,"age")
	value,ok = m["age"]
	fmt.Println(value,ok)
}
func main() {
	testMap()
}
posted @ 2018-09-06 21:17  遥望1992  阅读(151)  评论(0编辑  收藏  举报