Go 语言Map(集合)

Map 是一种无序的键值对的集合。Map 最重要的一点是通过 key 来快速检索数据,key 类似于索引,指向数据的值。

Map 是一种集合,所以我们可以像迭代数组和切片那样迭代它。不过,Map 是无序的,我们无法决定它的返回顺序,这是因为 Map 是使用 hash 表来实现的。

定义 Map

可以使用内建函数 make 也可以使用 map 关键字来定义 Map:


声明变量,默认map是nil
var map_name = map[type]type
另外一种使用make创建
map_name := make(map[type]type)

如果不初始化 map,那么就会创建一个 nil map。nil map 不能用来存放键值对

下面实例演示了创建和使用map:

 package main

 import (
"fmt"
) func main(){
//创建map
countryCapitalMap := make(map[string]string) //插入每个国家对应的首都
countryCapitalMap["France"] = "Paris"
countryCapitalMap["Italy"] = "Rome"
countryCapitalMap["Japan"] = "Tokyo"
countryCapitalMap["India"] = "New Delhi" //使用key输出map的值
fmt.Println("第一种输出的方式")
for country := range countryCapitalMap{
fmt.Println("Capital of",country,"is",countryCapitalMap[country])
} //直接输出map的key和值
fmt.Println("第二种输出的方式")
for k,v := range countryCapitalMap{
fmt.Println("Capital of",k,"is",v)
} //查看元素是否在map中,变量ok会返回true或者false,当查询的key在map中则返回true并且captial会获取到map中的值
fmt.Println("***************************************")
captial, ok := countryCapitalMap["United States"]
if ok{
fmt.Println("Capital of",captial,"is",countryCapitalMap[captial])
}else{
fmt.Println("Capital of United States is not present")
}
}

以上代码执行返回的结果:

第一种输出的方式
Capital of France is Paris
Capital of Italy is Rome
Capital of Japan is Tokyo
Capital of India is New Delhi
第二种输出的方式
Capital of France is Paris
Capital of Italy is Rome
Capital of Japan is Tokyo
Capital of India is New Delhi
***************************************
Capital of United States is not present

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("原始的map")
for k,v := range countryCapitalMap{
fmt.Println("Capital of",k,"is",v)
} //删除map中的France中的key和值
delete(countryCapitalMap,"France") fmt.Println("删除后的map")
for k,v := range countryCapitalMap{
fmt.Println("Capital of",k,"is",v)
}
}

以上代码执行返回的结果:

原始的map
Capital of Italy is Rome
Capital of Japan is Tokyo
Capital of India is New Delhi
Capital of France is Paris
删除后的map
Capital of Japan is Tokyo
Capital of India is New Delhi
Capital of Italy is Rome

因为map的特性,排序是无序的,但是,我TMD就想按着map的key的顺序打印怎么搞,往下看!

 package main

 import (
"fmt"
) func main(){
//创建map
countryCapitalMap := map[string] string {"France":"Paris","Italy":"Rome","Japan":"Tokyo","India":"New Delhi"}
country_array := [] string {"France","Italy","Japan","India"} //根据自定义的数组的顺序有序的打印map中的信息
for _,country := range country_array{
fmt.Printf("Capital %v of is %v \n",country,countryCapitalMap[country])
}
}

以上代码执行返回的结果:

Capital France of  is Paris
Capital Italy of is Rome
Capital Japan of is Tokyo
Capital India of is New Delhi

Go语言Map的使用的更多相关文章

  1. go语言---map

    go语言---map https://blog.csdn.net/cyk2396/article/details/78890185 一.map的用法: type PersonDB struct { I ...

  2. Go 语言 map (映射)

    1.Go 语言中 map 的定义及初始化: map[Key_Type]Value_Type scence := make(map[string]int) 2.Go 语言的遍历: scene := ma ...

  3. Go语言 map的实现

    Go中的map在底层是用哈希表实现的,你可以在 $GOROOT/src/pkg/runtime/hashmap.goc 找到它的实现. 数据结构 哈希表的数据结构中一些关键的域如下所示: struct ...

  4. Go语言 map遍历

    1 遍历顺序 Go语言里的map,是不保证遍历顺序的(这一点很好理解).甚至同样内容的map,两次遍历的顺序,也可能不一样.下面是一个例子: m := map[string]int{"a1& ...

  5. 【转】GO语言map类型interface{}转换踩坑小记

    原文:https://www.az1314.cn/art/69 ------------------------------------------ mapA := make([string]inte ...

  6. Go 语言Map(集合)

    Map 是一种无序的键值对的集合.Map 最重要的一点是通过 key 来快速检索数据,key 类似于索引,指向数据的值. Map 是一种集合,所以我们可以像迭代数组和切片那样迭代它.不过,Map 是无 ...

  7. go语言map操作

    package main import "fmt" func main() { var m = map[int]string{ 90: "优秀", 80: &q ...

  8. Go语言map

    map 是一种特殊的数据结构:一种元素对(pair)的无序集合,pair 的一个元素是 key,对应的另一个元素是 value,所以这个结构也称为关联数组或字典.这是一种快速寻找值的理想结构:给定 k ...

  9. Go语言map映射的基本操作

    对比python, java都有对应的字典类型及哈希类型. package main import ( "fmt" ) //main is the entry of the pro ...

随机推荐

  1. CSS使用心得小结

    CSS心得 最近对CSS的使用有一些小心得,在此写下来给大家分享分享 .最后附上选择器的实例代码. ------DanlV CSS是什么 层叠样式表(英文全称:Cascading Style Shee ...

  2. Host 'hello-PC' is not allowed to connect to this MySQL server远程连接mysql授权

    问题:"Host 'admin-PC' is not allowed to connect to this MySQLserver"   (其中,admin-PC为我的机器名) 原 ...

  3. jstack

    简介 jstack用于打印出给定的java进程ID的Java堆栈信息,一般用于检查应用的线程问题,死锁问题 常用命令 jstack 输出 $ jstack 11376 2014-01-21 20:36 ...

  4. Java 常用排序算法实现--快速排序、插入排序、选择、冒泡

      public class ArrayOperation {    //二分查找算法    public static int branchSearch(int[] array, int searc ...

  5. "HK"日常之制作一只QQ刷屏

    刷屏器是什么?可以吃吗?如果可以吃它好吃吗? um. 刷屏器就是可以定时发生信息的东西 刷屏器可以应用于很多方面,例如别人不理你了或者在QQ斗图的时候.警告:本教程仅作为学习研究,禁止其他用途!--- ...

  6. 五. Java集合概要

    了解了Java内存相关的内容后,现在来简单介绍下Java的集合. Set:不含有重复数据的集合.常用的对象HashSet,TreeSet,LinkedHashSet.HashSet拥有很好的性能,其数 ...

  7. 初学Python(四)——set

    初学Python(四)——set 初学Python,主要整理一些学习到的知识点,这次是set. # -*- coding:utf-8 -*- #先来看数组和set的差别 d=[1,1,2,3,4,5] ...

  8. Linux 下实时查看日志

    Linux 下实时查看日志 cat /var/log/*.log 如果日志在更新,如何实时查看 tail -f /var/log/messages 还可以使用 watch -d -n 1 cat /v ...

  9. setInterval()的时间参数无法随参数的变化而变化

    2017-04-18 写了个随机抽奖的小案例,打算随机跳动十次,每次变化的时间越来越长,也就是跳动的速度越来越慢,结果发现setInterval的时间参数并不会随着变化. <!--案例的结构如下 ...

  10. ue4 C++ 导入图片

    void SDrawHouseTypeTools::OnButtonClickLoadImage() {        // 当前如果是在硬装模块,则可进行导入户型操作        FHardEdM ...