0
点赞
收藏
分享

微信扫一扫

Go学习:map

得一道人 2022-02-23 阅读 88

定义格式

  1. map[K]V
  2. map[K1]map[K2]V(复合Map)

创建map

func main() {
	// 定义map的几种方式
	m := map[string]string {
		"zhang":"san",
		"li":"si",
		"wang":"wu"}
	//map[li:si wang:wu zhang:san]
	fmt.Println(m)

	m2 := make(map[string]int)// 这种是一个空map
	//map[]
	fmt.Println(m2)

	var m3 map[string]int // 这是nil
	//map[]
	fmt.Println(m3)
}

遍历map

func main() {
	// 定义map的几种方式
	m := map[string]string {
		"zhang":"san",
		"li":"si",
		"wang":"wu"}
	// 遍历map
	// map是无序的,遍历的顺序会有多种
	for k,v := range m{
		fmt.Println(k,v)
	}
}
//zhang san
//li si
//wang wu

遍历时如果不需要K/V时,k/v使用_表示

通过key获取value

func main() {
	// 定义map的几种方式
	m := map[string]string {
		"zhang":"san",
		"li":"si",
		"wang":"wu"}

	// 通过key获取value
	s := m["zhang"]
	// san
	fmt.Println(s)
	s2 := m["zang"]
	//
	fmt.Println(s2)//打了一个空串,拿到的是一个ZeroValue
	s3,ok := m["l"]
	//  false
	fmt.Println(s3,ok)
	if s3,ok := m["li"];ok{
		// si
		fmt.Println(s3)
	}else {
		fmt.Println("key does not exist")
	}
	if s3,ok := m["l"];ok{
		fmt.Println(s3)
	}else {
		// key does not exist
		fmt.Println("key does not exist")
	}
}

删除key

func main() {
	// 定义map的几种方式
	m := map[string]string {
		"zhang":"san",
		"li":"si",
		"wang":"wu"}
	if s3,ok := m["li"];ok{
		// si
		fmt.Println(s3)
	}else {
		fmt.Println("key does not exist")
	}
	delete(m,"li")
	if s3,ok := m["li"];ok{
		fmt.Println(s3)
	}else {
		// key does not exist
		fmt.Println("key does not exist")
	}
}
  1. 创建: make(map[K]V)
  2. 获取元素:m[key]
  3. key不存在时,获得Value类型的初始值(ZeroValue)
  4. 用value,ok:=m[key]来判断是否存在key
  5. 用delete删除一个key
  6. 使用range单独遍历key或者value,或者遍历key,value对
  7. 不保证遍历顺序,如需顺序,需手动对key排序
  8. 使用len获得元素个数
  9. map使用哈希表,必须可以比较相等
  10. 除了slice,map,function的内建类型都可以作为key
  11. Struct类型不包含上述字段,也可以作为key
举报

相关推荐

Go语言学习、Map结构

go map

Go map类型

go中map

go语言学习12:Map的使用

go语言之map

Go string 转map

0 条评论