Go语言map用法实例分析

2015-01-24  来源:本站原创  分类:Golang  人气:6 

这篇文章主要介绍了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语言程序设计有所帮助。

相关文章
  • Go语言map用法实例分析 2015-01-24

    这篇文章主要介绍了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

  • go语言接口用法实例分析 2013-11-03

    这篇文章主要介绍了go语言接口用法,实例分析了Go语言接口的定义及使用技巧,需要的朋友可以参考下 本文实例讲述了go语言接口用法.分享给大家供大家参考.具体分析如下: 首先定义一个接口: type I interface{ Get() int Put(int) } 这段话就定义了一个接口,它包含两个函数Get和Put 好了,我的一个接口实现了这个接口: 复制代码 代码如下: type S stuct {val int} func (this *S) Get int { return this.v

  • GO语言Defer用法实例分析 2015-03-09

    这篇文章主要介绍了GO语言Defer用法,实例分析了Defer的使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下 本文实例讲述了GO语言Defer用法.分享给大家供大家参考.具体分析如下: defer:调用一个被 defer 的函数时在函数刚要返回之前延迟执行,当函数无论怎样返回,某资源必须释放时,可用这种与众不同.但有效的处理方式.传统的例子包括解锁互斥或关闭文件. 这样延迟一个函数有双重优势:一是你永远不会忘记关闭文件,此错误在你事后编辑函数添加一个返回路径时常常发生.二是关闭和打开靠在

  • go语言base64用法实例 2014-06-23

    这篇文章主要介绍了go语言base64用法,实例分析了Go语言base64编码的实用技巧,具有一定参考借鉴价值,需要的朋友可以参考下 本文实例讲述了go语言base64用法.分享给大家供大家参考.具体如下: 这里展示golang base64 的一个小例子,代码如下: package main import ( "fmt" "encoding/base64" ) func main() { b64 := base64.NewEncoding("ABCDEF

  • Go语言MessageBox用法实例 2014-11-05

    这篇文章主要介绍了Go语言MessageBox用法,实例分析了MessageBox提示框的实现与使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下 本文实例讲述了Go语言MessageBox用法.分享给大家供大家参考.具体如下: package main import ( "syscall" "unsafe" "fmt" ) func abort(funcname string, err int) { panic(funcname + &quo

  • go语言template用法实例 2014-12-12

    这篇文章主要介绍了go语言template用法,实例分析了template的使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下 本文实例讲述了go语言template用法.分享给大家供大家参考.具体分析如下: golang的template包很好用,做一些复杂的文本格式生成太有帮助了,生成网页也是很不错的,使用起来非常方便 package main import ( "fmt" "os" "text/template" ) type Latln

  • Go语言接口用法实例 2015-04-06

    这篇文章主要介绍了Go语言接口用法,实例分析了Go语言接口的功能.定义及使用技巧,需要的朋友可以参考下 本文实例讲述了Go语言接口用法.分享给大家供大家参考.具体分析如下: 接口类型是由一组方法定义的集合. 接口类型的值可以存放实现这些方法的任何值. package main import ( "fmt" "math" ) type Abser interface { Abs() float64 } func main() { var a Abser f := My

  • Go语言map字典用法实例分析 2014-09-13

    这篇文章主要介绍了Go语言map字典用法,实例分析了map字典的使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下 本文实例讲述了Go语言map字典用法.分享给大家供大家参考.具体分析如下: 这段代码生成了青岛.济南.烟台三个城市拼音和汉字的对照字典,根据拼音可以输出汉字 package main import "fmt" func main(){ var pc map[string] string pc = make(map[string] string) pc["qin

  • Go语言中的range用法实例分析 2014-06-25

    这篇文章主要介绍了Go语言中的range用法,实例分析了range的功能与使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下 本文实例讲述了Go语言中的range用法.分享给大家供大家参考.具体如下: for 循环的 range 格式可以对 slice 或者 map 进行迭代循环. package main import "fmt" var pow = []int{1, 2, 4, 8, 16, 32, 64, 128} func main() { for i, v := range

  • JQuery中serialize()用法实例分析 2013-11-22

    这篇文章主要介绍了JQuery中serialize()用法,实例分析了serialize()方法的功能.定义及相关使用技巧,需要的朋友可以参考下 本文实例讲述了JQuery中serialize()用法.分享给大家供大家参考.具体分析如下: 一.serialize()定义和用法: serialize()方法通过序列化表单值,创建标准的URL编码文本字符串,它的操作对象是代表表单元素集合的jQuery 对象.你可以选择一个或多个表单元素(比如input或文本框),或者 form 元素本身.序列化的值

  • Go语言中的switch用法实例分析 2013-12-06

    这篇文章主要介绍了Go语言中的switch用法,实例分析了switch的功能及使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下 本文实例讲述了Go语言中的switch用法.分享给大家供大家参考.具体分析如下: 这里你可能已经猜到 switch 可能的形式了. case 体会自动终止,除非用 fallthrough 语句作为结尾. package main import ( "fmt" "runtime" ) func main() { fmt.Print(&qu

  • JS函数this的用法实例分析 2014-03-17

    这篇文章主要介绍了JS函数this的用法,实例分析了javascript中this的功能.定义及相关使用技巧,需要的朋友可以参考下 本文实例讲述了JS函数this的用法.分享给大家供大家参考.具体如下: 在js中写函数时,很多用到this. this究竟是什么,this是个关键字,是个指针,指向执行环境作用域,也称之为上下文. 先说下函数吧,个人理解是函数是在语言中重复调用的代码块. 在JS里,把函数赋值给对象的属性时,称之为方法 如: var m={}; m.title='title'; m.

  • Jackson的用法实例分析 2014-05-18

    这篇文章主要介绍了Jackson的用法实例分析,用于处理Java的json格式数据非常实用,需要的朋友可以参考下 通俗的来说,Jackson是一个 Java 用来处理 JSON 格式数据的类库,其性能非常好.本文就来针对Jackson的用法做一个较为详细的实例分析.具体如下: 一.简介 Jackson具有比较高的序列化和反序列化效率,据测试,无论是哪种形式的转换,Jackson > Gson > Json-lib,而且Jackson的处理能力甚至高出Json-lib近10倍左右,且正确性也十分

  • Go语言中slice的用法实例分析 2014-07-21

    这篇文章主要介绍了Go语言中slice的用法,实例分析了slice的功能及使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下 本文实例讲述了Go语言中slice的用法.分享给大家供大家参考.具体如下: slice 指向数组的值,并且同时包含了长度信息. []T 是一个元素类型为 T 的 slice. package main import "fmt" func main() { p := []int{2, 3, 5, 7, 11, 13} fmt.Println("p ==

  • go语言单例模式(Singleton)实例分析 2014-09-13

    这篇文章主要介绍了go语言单例模式(Singleton),实例分析了单例模式的原理与Go语言的实现技巧,需要的朋友可以参考下 本文实例讲述了go语言单例模式(Singleton)用法.分享给大家供大家参考.具体分析如下: 单例模式(Singleton):表示一个类只会生成唯一的一个对象.单例模式具有如下性质: A.这些类只能有一个实例: B.这些能够自动实例化: C.这个类对整个系统可见,即必须向整个系统提供这个实例. package singleton import "fmt" va

  • jQuery中noConflict()用法实例分析 2015-02-08

    这篇文章主要介绍了jQuery中noConflict()用法,实例分析了noConflict()的功能.定义及相关使用技巧,需要的朋友可以参考下 本文实例讲述了jQuery中noConflict()用法.分享给大家供大家参考.具体分析如下: jQuery默认使用"$"操作符,$ 符号只是 window.jQuery 对象的一个引用,jQuery.noConflict() ,这个函数将变量$的控制权让渡给第一个实现它的那个库.这有助于确保jQuery不会与其他库的$对象发生冲突.在运行这

  • php中return的用法实例分析 2015-02-27

    这篇文章主要介绍了php中return的用法,实例分析了php中return的功能及常见的使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下 本文实例讲述了php中return的用法.分享给大家供大家参考.具体分析如下: 首先,它的意思就是返回;return()是语言结构而不是函数,仅在参数包含表达式时才需要用括号将其括起来.当返回一个变量时通常不用括号,这样可以降低PHP的负担. 基本用法: a).return expression // 返回一个表达式结果 b).return(expr)

  • jquery中change()用法实例分析 2013-10-19

    这篇文章主要介绍了jquery中change()用法,实例分析了change的功能.定义及具体的使用技巧,非常具有实用价值,需要的朋友可以参考下 本文实例分析了jquery中change()的用法.分享给大家供大家参考.具体分析如下: change()当元素的值发生改变时,会发生 change 事件.该事件仅适用于文本域(text field),以及 textarea 和 select 元素. 当用于 select 元素时,change 事件会在选择某个选项时发生.当用于 text field

  • C#正则表达式Regex类用法实例分析 2013-10-20

    这篇文章主要介绍了C#正则表达式Regex类用法,实例分析了其中比较常见的几类用法,具有一定的实用价值,需要的朋友可以参考下 本文实例讲述了C#正则表达式Regex类用法,分享给大家供大家参考.具体实现方法如下: 一.在C#中,要使用正则表达式类,请在源文件开头处添加以下语句: using System.Text.RegularExpressions; 二.RegEx类常用的方法 1.静态Match方法 使用静态Match方法,可以得到源中第一个匹配模式的连续子串. 静态的Match方法有2个重

  • JQuery中extend的用法实例分析 2013-12-02

    这篇文章主要介绍了JQuery中extend的用法,实例分析了extend的功能.定义及相关使用技巧,需要的朋友可以参考下 本文实例讲述了JQuery中extend的用法.分享给大家供大家参考.具体分析如下: extend()函数是jQuery的基础函数之一,作用是扩展现有的对象.extend是我们在写插件的过程中常用的方法,该方法有一些重载原型.$.extend(prop) 用于扩展jQuery对象,可以用于把函数添加到jQuery名称空间中. 一.jQuery.extend函数的源码 jQu