Go语言map用法实例分析

本文实例讲述了Go语言map用法。分享给大家供大家参考。具体分析如下:

map 映射键到值:

map 在使用之前必须用 make 来创建(不是 new);一个值为 nil 的 map 是空的,并且不能赋值。

代码如下:

package main
import "fmt"
type Vertex struct {
    Lat, Long float64
}
var m map[string]Vertex
func main() {
    m = make(map[string]Vertex)
    m["Bell Labs"] = Vertex{
        40.68433, 74.39967,
    }
    fmt.Println(m["Bell Labs"])
}

map 的文法跟结构体文法相似,不过键名是必须的。

代码如下:

package main
import "fmt"
type Vertex struct {
    Lat, Long float64
}
var m = map[string]Vertex{
    "Bell Labs": Vertex{
        40.68433, -74.39967,
    },
    "Google": Vertex{
        37.42202, -122.08408,
    },
}
func main() {
    fmt.Println(m)
}

如果顶层类型只有类型名的话,可以在文法的元素中省略键名。

代码如下:

package main
import "fmt"
type Vertex struct {
    Lat, Long float64
}
var m = map[string]Vertex{
    "Bell Labs": {40.68433, -74.39967},
    "Google":    {37.42202, -122.08408},
}
func main() {
    fmt.Println(m)
}

修改map:

在 map m 中插入或修改一个元素:

代码如下:

m[key] = elem

获得元素:

代码如下:

elem = m[key]

删除元素:

代码如下:

delete(m, key)

通过双赋值检测某个键存在:

代码如下:

elem, ok = m[key]

如果 key 在 m 中, ok 是 true。 否则,ok 是 false 并且 elem 是 map 的元素类型的零值。

同样的,当从 map 中读取某个不存在的键时,结果是 map 的元素类型的零值。

代码如下:

package main
import "fmt"
func main() {
    m := make(map[string]int)
    m["Answer"] = 42
    fmt.Println("The value:", m["Answer"])
    m["Answer"] = 48
    fmt.Println("The value:", m["Answer"])
    delete(m, "Answer")
    fmt.Println("The value:", m["Answer"])
    v, ok := m["Answer"]
    fmt.Println("The value:", v, "Present?", ok)
}

希望本文所述对大家的Go语言程序设计有所帮助。

(0)

相关推荐

  • Go语言用map实现堆栈功能的方法

    本文实例讲述了Go语言用map实现堆栈功能的方法.分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: package stack import (     "strconv" ) type Stack struct {     quenu map[int]int } func New() *Stack{     s := new(Stack)     s.quenu = make(map[int]int)     return s } func (s *Stack) Pus

  • golang针对map的判断,删除操作示例

    本文实例讲述了golang针对map的判断,删除操作.分享给大家供大家参考,具体如下: map是一种key-value的关系,一般都会使用make来初始化内存,有助于减少后续新增操作的内存分配次数.假如一开始定义了话,但没有用make来初始化,会报错的. 复制代码 代码如下: package main import ( "fmt" ) func main(){ var test =  map[string]string{"姓名":"李四",&qu

  • Golang学习笔记(四):array、slice、map

    一.Array 在Go语言中,数组是一个值类型(value type) 所有的值类型变量在赋值和作为参数传递时都将产生一个复制动作 如果作为函数的参数类型,则在函数调用时参数发生数据复制,在函数体中无法修改传入数组的内容 数组相等用 = != 比较,不能用 < > 1.声明&赋值 初始化 语法 复制代码 代码如下: var VarName [n]type     // n>=0 e.g. var a [5]int //[0 0 0 0 0] var c [2][3]int //二

  • 理解Golang中的数组(array)、切片(slice)和map

    我比较喜欢先给出代码,然后得出结论 数组 复制代码 代码如下: package main import (     "fmt" ) func main() {     arr := [...]int{1, 2, 3}     //打印初始的指针     fmt.Printf("the pointer is : %p \n", &arr)     printPointer(arr) } func printPointer(any interface{}) {

  • Go语言map字典用法实例分析

    本文实例讲述了Go语言map字典用法.分享给大家供大家参考.具体分析如下: 这段代码生成了青岛.济南.烟台三个城市拼音和汉字的对照字典,根据拼音可以输出汉字 复制代码 代码如下: package main import "fmt" func main(){  var pc map[string] string  pc = make(map[string] string)  pc["qingdao"] = "青岛"  pc["jinan&

  • go语言map字典删除操作的方法

    本文实例讲述了go语言map字典删除操作的方法.分享给大家供大家参考.具体分析如下: 这里先构造了一点map,添加了青岛.济南.烟台三地的拼音和汉字字典,然后删除青岛,最后查看青岛是否还存在 复制代码 代码如下: package main import "fmt" func main(){     var pc map[string] string     pc = make(map[string] string)     pc["qingdao"] = "

  • Go语言字典(map)用法实例分析【创建,填充,遍历,查找,修改,删除】

    本文实例讲述了Go语言字典(map)用法.分享给大家供大家参考,具体如下: 字典是一种内置的数据结构,用来保存 键值对 的 无序集合. (1)字典的创建 1) make(map[KeyType]ValueType, initialCapacity) 2) make(map[KeyType]ValueType) 3) map[KeyType]ValueType{} 4) map[KeyType]ValueType{key1 : value1, key2 : value2, ... , keyN :

  • GO语言映射(Map)用法分析

    本文实例讲述了GO语言映射(Map)用法.分享给大家供大家参考.具体如下: 映射是一种内置的数据结构,用来保存键值对的无序集合. (1)映射的创建 make ( map [KeyType] ValueType, initialCapacity ) make ( map [KeyType] ValueType ) map [KeyType ] ValueType {} map [KeyType ] ValueType { key1 : value1, key2: value2, ... , key

  • Go语言入门教程之Arrays、Slices、Maps、Range操作简明总结

    Arrays:数组 在go语言中数组array是一组特定长度的有序的元素集合. 复制代码 代码如下: package main import "fmt" func main() { //这里我们创建了一个长度为5的数组. 这一组数组的初值是zero-valued.整型就是0     var a [5]int     fmt.Println("emp:", a) //可以通过array[index] = value语法赋值     a[4] = 100     fmt

  • Go语言中的Array、Slice、Map和Set使用详解

    Array(数组) 内部机制 在 Go 语言中数组是固定长度的数据类型,它包含相同类型的连续的元素,这些元素可以是内建类型,像数字和字符串,也可以是结构类型,元素可以通过唯一的索引值访问,从 0 开始. 数组是很有价值的数据结构,因为它的内存分配是连续的,内存连续意味着可是让它在 CPU 缓存中待更久,所以迭代数组和移动元素都会非常迅速. 数组声明和初始化 通过指定数据类型和元素个数(数组长度)来声明数组. 复制代码 代码如下: // 声明一个长度为5的整数数组 var array [5]int

随机推荐