• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

05.gomap详细介绍

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
映射是一个集合,可以使用类似处理数组和切片的方式迭代映射中的元素。但映射是无序的集合,意味着没有办法预测键值对被返回的顺序。即便使用同样的顺序保存键值对,每次迭代映射的时候顺序也可能不一样。

创建map

package main

import "log"

func main() {
    // 创建一个映射,键的类型是 string,值的类型是 int
    dict := make(map[string]int)
    log.Println(dict)

    // 创建一个映射,键和值的类型都是 string
    // 使用两个键值对初始化映射
    dict2 := map[string]string{"Red": "#da1337", "Orange": "#e95a22"}
    log.Println(dict2)

    // 创建一个空映射,用来存储颜色以及颜色对应的十六进制代码
    colors := map[string]string{}
    // 将 Red 的代码加入到映射
    colors["Red"] = "#da1337"
    log.Println(colors)
}

控制台:
2018/02/07 17:37:28 map[]

2018/02/07 17:37:32 map[Red:#da1337 Orange:#e95a22]

2018/02/07 17:37:40 map[Red:#da1337]

从映射获取值,并通过该值判断键是否存在获取键 Blue 对应的值

    var colors map[string]string


    value := colors["Blue"]
    // 这个键存在吗?
    if value != "" {
        log.Println(value)
    }

使用 range 迭代映射

// 创建一个映射,存储颜色以及颜色对应的十六进制代码
    colors2 := map[string]string{
        "AliceBlue":   "#f0f8ff",
        "Coral":       "#ff7F50",
        "DarkGray":    "#a9a9a9",
        "ForestGreen": "#228b22",
    }
    // 显示映射里的所有颜色
    for key, value := range colors2 {
        log.Printf("Key: %s Value: %s\n", key, value)
    }

从映射中删除一项

// 删除键为 Coral 的键值对
    delete(colors2, "Coral")
    // 显示映射里的所有颜色
    for key, value := range colors2 {
        log.Printf("Key: %s Value: %s\n", key, value)
    }

在函数间传递映射

在函数间传递映射并不会制造出该映射的一个副本。实际上,当传递映射给一个函数,并对这个映射做了修改时,所有对这个映射的引用都会察觉到这个修改,这个特性和切片类似,保证可以用很小的成本来复制映射

func main() {
// 创建一个映射,存储颜色以及颜色对应的十六进制代码
colors := map[string]string{
"AliceBlue": "#f0f8ff",
"Coral": "#ff7F50",
"DarkGray": "#a9a9a9",
"ForestGreen": "#228b22",
}
// 显示映射里的所有颜色
for key, value := range colors {
fmt.Printf("Key: %s Value: %s\n", key, value)
}
// 调用函数来移除指定的键
removeColor(colors, "Coral")
// 显示映射里的所有颜色
for key, value := range colors {
fmt.Printf("Key: %s Value: %s\n", key, value)
}
}
// removeColor 将指定映射里的键删除
func removeColor(colors map[string]string, key string) {
delete(colors, key)
}

Key: AliceBlue Value: #F0F8FF
Key: Coral Value: #FF7F50
Key: DarkGray Value: #A9A9A9
Key: ForestGreen Value: #228B22
Key: AliceBlue Value: #F0F8FF
Key: DarkGray Value: #A9A9A9
Key: ForestGreen Value: #228B22

映射传递给函数成本很小,并且不会复制底层的数据结构。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
16.理解Go语言面向对象编程:接口与多态发布时间:2022-07-10
下一篇:
Go 语言“可变参数函数”终极指南发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap