Map 是一种无序的键值对集合,Map 最重要的一点是通过key快速检索数据,
key类似于索引,指向数据的值。
Map 是一种集合,所以我们可以像迭代数组一样迭代它。不过,Map是无序的。我们无法决定它的返回顺序。
这是因为,Map是使用hash表来实现的。
1. 定义Map
a. 使用内建函数make
map_name := make(map[key_type]value_type)
b. 使用map关键字定义Map
/* 声明变量,默认 map 是 nil , nil map 不能用来存放键值 */
var map_name map[key_type]value_type
var ma map[string]int
ma["aa"]=1
// 运行程序会报错。 panic: assignment to entry in nil map
示例:
package main
import "fmt"
func main() {
var countryCapitalMap = make(map[string]string)
/* map插入key - value对,各个国家对应的首都 */
countryCapitalMap [ "France" ] = "巴黎"
countryCapitalMap [ "Italy" ] = "罗马"
countryCapitalMap [ "Japan" ] = "东京"
countryCapitalMap [ "India " ] = "新德里"
/*使用键输出地图值 */
for country := range countryCapitalMap {
fmt.Println(country, "首都是", countryCapitalMap [country])
}
/*查看元素在集合中是否存在 */
capital, ok := countryCapitalMap [ "American" ] /*如果确定是真实的,则存在,否则不存在 */
/*fmt.Println(capital) */
/*fmt.Println(ok) */
if (ok) {
fmt.Println("American 的首都是", capital)
} else {
fmt.Println("American 的首都不存在")
}
}
2. 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 ])
}
}