欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

7. go 集合map

程序员文章站 2024-03-23 09:36:22
...

map(集合)

  • Map 是一种无序的键值对的集合。Map 最重要的一点是通过 key 来快速检索数据,key 类似于索引,指向数据的值。
  • Map 是一种集合,所以我们可以像迭代数组和切片那样迭代它。不过,Map 是无序的,我们无法决定它的返回顺序,这是因为 Map 是使用 hash 表来实现的。
  • 需要注意的是 map 作为函数参数传递是 是地址传递,函数内更改 map 会影响实参的值
  • 除了slice,map,function的内建类型都可以作为key, Struct类型不包含上次字段,也可以作为key

定义 Map

  • 使用 map 关键字 或者 make 函数
  • map 如果不初始化,那么就会创建一个 nil mapnil map 不能用来存放键值对
/* 声明变量,默认 map 是 nil */
var map_variable map[key_data_type]value_data_type

/* 使用 make 函数 */
map_variable := make(map[key_data_type]value_data_type)

遍历map

  • 使用 range 遍历 key ,或者遍历 key、value键值对,不保证遍历顺序,如需顺序,需手动对key排序。
var mMap  map[string]string = map[string]string {
	"a" : "this is a",
	"b" : "this is b",
}

var k, v string
for k, v = range mMap {
	fmt.Printf(k, v)
	fmt.Println("")
}

判断 map 中是否存在指定 key

  • 用value,ok:=m[key]来判断是否存在key
if v, ok :=mMap["a"]; ok {
	fmt.Printf(v, ok)
} else {
	fmt.Printf("ok is not exist")
}

delete() 函数

  • delete() 函数用于删除集合的元素, 参数为 map 和其对应的 key。
package main

import "fmt"

func main() {
        /* 创建map */
        countryCapitalMap := map[string]string{"France": "Paris", "Italy": "Rome", "Japan": "Tokyo", "India": "New delhi"}

        fmt.Println("原始地图")

        /* 打印地图 */
        for country := range countryCapitalMap {
                fmt.Println(country, "首都是", countryCapitalMap [ country ])
        }

        /*删除元素*/ delete(countryCapitalMap, "France")
        fmt.Println("法国条目被删除")

        fmt.Println("删除元素后地图")

        /*打印地图*/
        for country := range countryCapitalMap {
                fmt.Println(country, "首都是", countryCapitalMap [ country ])
        }
}

// 输出结果为
/*
原始地图
India 首都是 New delhi
France 首都是 Paris
Italy 首都是 Rome
Japan 首都是 Tokyo
法国条目被删除
删除元素后地图
Italy 首都是 Rome
Japan 首都是 Tokyo
India 首都是 New delhi
*/
相关标签: go golang