go 学习 第十六章 Go语言 Map (集合)

本文深入探讨了Go语言中Map的定义、使用及删除操作。Map作为无序的键值对集合,通过key进行数据检索,利用hash表实现高效查找。文章提供了定义Map的两种方式,演示了插入、读取和删除Map元素的实例代码。

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值