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


      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 
    ", mapLst["one"])
        fmt.Printf("map  assign at "two" is :%d 
    ", mapAssign["two"])
        fmt.Printf("map  created at "key2" is :%f 
    ", 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,即使只是大概知道容量,也最好先标明。

  • 相关阅读:
    python学习笔记(excel中处理日期格式)
    python学习笔记(生成xml)
    python学习笔记(接口自动化框架 V1.0)
    python学习笔记(excel+unittest)
    刷题[RoarCTF 2019]Easy Java
    刷题[GKCTF2020]
    php bypass disable function
    刷题[MRCTF2020]Ezpop
    刷题[安恒DASCTF2020四月春季赛]Ez unserialize
    刷题[HFCTF2020]EasyLogin
  • 原文地址:https://www.cnblogs.com/personblog/p/12254316.html
Copyright © 2020-2023  润新知