Go语言map用法实例分析

 更新时间:2015年02月25日 15:28:56   作者:不是JS  
这篇文章主要介绍了Go语言map用法,实例分析了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语言程序设计有所帮助。

相关文章

  • GoLang与Java各自生成grpc代码流程介绍

    GoLang与Java各自生成grpc代码流程介绍

    这篇文章主要介绍了GoLang与Java各自生成grpc代码流程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧
    2023-03-03
  • Golang 锁原理的简单实现

    Golang 锁原理的简单实现

    本文主要介绍了Golang 锁原理的简单实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-03-03
  • Go中init()执行顺序详解

    Go中init()执行顺序详解

    go允许定义多个init(),多个init()会涉及到执行先后的问题,本文将详细讲解Go中init()执行顺序,感兴趣的朋友一起看看吧
    2022-09-09
  • golang反射机制的用法详解

    golang反射机制的用法详解

    Golang 作为静态类型的编译型语言,虽然在设计上倾向于简洁和高效,但也内置了强大的反射机制,本文将深入讲解 Golang 的反射机制,帮助大家更好地理解和运用这一强大的特性,需要的朋友可以参考下
    2023-12-12
  • 一文详解Golang协程调度器scheduler

    一文详解Golang协程调度器scheduler

    这篇文章主要介绍了一文详解Golang协程调度器scheduler,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的朋友可以参考一下
    2022-07-07
  • Go 函数返回nil遇到问题避坑分析

    Go 函数返回nil遇到问题避坑分析

    这篇文章主要为大家介绍了Go 函数返回nil遇到的避坑问题分析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-01-01
  • go语言题解LeetCode1122数组的相对排序

    go语言题解LeetCode1122数组的相对排序

    这篇文章主要为大家介绍了go语言题解LeetCode1122数组的相对排序,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-12-12
  • GoLang中Module的基本使用方法

    GoLang中Module的基本使用方法

    Go module是从Go 1.11版本才引入的新功能,下面这篇文章主要给大家介绍了关于GoLang中Module的基本使用方法,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-01-01
  • Go习惯用法(多值赋值短变量声明赋值简写模式)基础实例

    Go习惯用法(多值赋值短变量声明赋值简写模式)基础实例

    本文为大家介绍了Go习惯用法(多值赋值,短变量声明和赋值,简写模式、多值返回函数、comma,ok 表达式、传值规则)的基础实例,帮大家巩固扎实Go语言基础
    2024-01-01
  • 深入了解Go的HttpClient超时机制

    深入了解Go的HttpClient超时机制

    在写 Go 的过程中经常对比这Java和GO语言的特性,踩了不少坑,也发现了不少有意思的地方,今天就来聊聊 Go 自带的 HttpClient 的超时机制
    2022-11-11

最新评论