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

Go语言map使用例子(Go语言映射)

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

  Go语言中 map 是一种特殊的数据结构,一种元素对(pair)的无序集合,pair 对应一个 key(索引)和一个 value(值),所以这个结构也称为关联数组或字典,这是一种能够快速寻找值的理想结构,给定 key,就可以迅速找到对应的 value。

map 这种数据结构在其他编程语言中也称为字典(Python)、hash 和 HashTable 等。

map 概念

map 是引用类型,可以使用如下方式声明:

var mapname map[keytype]valuetype

其中:

    • mapname 为 map 的变量名。
    • keytype 为键类型。
    • valuetype 是键对应的值类型。

示例

package main

import "fmt"

func main() {
    var mapLst map[string]int

    mapLst = map[string]int{"one": 1, "two": 2}
    //mapAssign 是 mapLst 的引用,对 mapAssign 的修改也会影响到 mapLst 的值
    mapAssign := mapLst
    //可以使用 make(),但不能使用 new() 来构造 map,如果错误的使用 new() 分配了一个引用对象,会获得一个空引用的指针,相当于声明了一个未初始化的变量并且取了它的地址
    mapCreated := make(map[string]float32)
    mapCreated["key1"] = 2.5
    mapCreated["key2"] = 3.14159
    mapCreated["key3"] = 3
    fmt.Printf("map  literal at \"one\" is :%d \n", mapLst["one"])
    fmt.Printf("map  assign at \"two\" is :%d \n", mapAssign["two"])
    fmt.Printf("map  created at \"key2\" is :%f \n", mapCreated["key2"])
}

上面代码中的 mapCreated 的创建方式mapCreated := make(map[string]float)等价于mapCreated := map[string]float32{} 

mapAssign 是 mapLst 的引用,对 mapAssign 的修改也会影响到 mapLst 的值。

注意:可以使用 make(),但不能使用 new() 来构造 map,如果错误的使用 new() 分配了一个引用对象,会获得一个空引用的指针,相当于声明了一个未初始化的变量并且取了它的地址:

map 容量

和数组不同,map 可以根据新增的 key-value 动态的伸缩,因此它不存在固定长度或者最大限制,但是也可以选择标明 map 的初始容量 capacity,格式如下:

make(map[keytype]valuetype, cap)

例如:

map2 := make(map[string]float, 100)

当 map 增长到容量上限的时候,如果再增加新的 key-value,map 的大小会自动加 1,所以出于性能的考虑,对于大的 map 或者会快速扩张的 map,即使只是大概知道容量,也最好先标明。


鲜花

握手

雷人

路过

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

请发表评论

全部评论

专题导读
上一篇:
Go West发布时间:2022-07-10
下一篇:
golang 删除用go get 安装的package发布时间: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