文档章节

Go语言_通神路之灵胎篇(6)

木九天
 木九天
发布于 2018/08/22 10:08
字数 607
阅读 34
收藏 1

1、映射

    1.1 概念

go的映射在java中被叫做集合

type Vertex struct {
    Lat, Long float64
}

var m map[string]Vertex

上面是go的映射m,如果用java代替的话,Vertex就是实体类,这样用java8可以写成

Map m = new HashMap<String,Vertex>()

所以go的映射就是java中的map集合

映射将键映射到值。映射的零值为 nil 。nil 映射既没有键,也不能添加键。make 函数会返回给定类型的映射,并将其初始化备用

    1.2 映射创建

创建映射的时候,可以这样赋值

var m = map[string]Vertex{
    "Bell Labs": Vertex{
        40.68433, -74.39967,
    },
    "Google": Vertex{
        37.42202, -122.08408,
    },
}

当类型是type类型的时候,也就是在java中是实体类的时候,可以不用在赋值中添加Vertex,如

var m = map[string]Vertex{
    "Bell Labs": {40.68433, -74.39967},
    "Google":    {37.42202, -122.08408},
}

当然这个map集合也可以是数据类型,如下

var x = make(map[string]int)

var y = make(map[string]float64)

...

    1.3 映射增删改查

在映射 m 中插入或修改元素,类似java中 m.put("key",elem):

m[key] = elem

获取元素,类似java中的 m.get("key"):

elem = m[key]

删除元素,类似java中的 m.remove("key") :

delete(m, key)

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

elem, ok = m[key]

若 key 在 m 中,ok 为 true,elem 是具体值;否则,ok 为 false, elem 是该映射元素类型的零值。

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

 :若 elem 或 ok 还未声明,你可以使用短变量声明:

elem, ok := m[key]

2、函数值

    2.1 函数值做参数值

go中的函数值也可以作为参数使用

func compute(fn func(float64, float64) float64) float64 {
    return fn(3, 4)
}

func main() {
    hypot := func(x, y float64) float64 {
        return math.Sqrt(x*x + y*y)
    }
    fmt.Println(hypot(5, 12))

    fmt.Println(compute(hypot))
}

    2.2 函数值做返回值

当然go的函数也是闭包,意思就是不仅可以作为参数值,也可以作为返回值

func adder() func(int) int {
   sum := 0
   return func(x int) int {
      sum += x
      return sum
   }
}

func main() {
   pos := adder()
   for i := 0; i < 10; i++ {
      fmt.Println(pos(i))
   }
}

结果为:

0
1
3
6
10
15
21
28
36
45

 

© 著作权归作者所有

木九天

木九天

粉丝 204
博文 228
码字总数 177766
作品 0
海淀
程序员
私信 提问
Go语言_通神路之五耀篇(1)

1、Go方法 在灵胎篇博客中讲到函数,函数就是类似与java中的方法,然而go中还有一些升级版的函数,叫方法。 只不过这种方法在方法名前还有一个括号加参数,只不过被称呼为接收者,方法名后面...

木九天
2018/08/22
35
0
一、信仰根基 1.认识真神

【提要】 茫茫宇宙,深邃浩瀚,究竟是谁掌管?山川河流、飞禽走兽,处处可见智慧的杰作;大地生机、春华秋实,又证明造物主的慈爱无处不在。随着现代科学对大到宇宙,小到细胞的了解的深入,...

小小牛奋男
2016/02/25
32
0
Linux 文本三剑客之awk 木石前盟

前言 一、木石前盟 众所周知,我们大中华上下5千年历史,其中当属“四大名著”最让人津津乐道。《红楼梦》一书更为四大名著之首,被评为中国古典章回小说的巅峰之作,是中国最受重视的一部文...

网费
2017/05/19
0
0
圣经(bible)启示我们:神是永恒

圣经告诉我们:神是永恒的。神是永恒的,所以人被造的时候有永恒的本质在里面。传道书第三章第十一节告诉我们:「神造万物,各按其时成为美好,又将永生安置在世人心里。」因此,人之所以成为...

crossmix
2015/04/18
147
1
《蒙福人生》读后感作文2900字

《蒙福人生》读后感作文2900字: 我们的财富从何来?投胎、勤奋、智慧、机遇?我相信会有很多小伙伴会把上面的选项都否掉,或是一定要加一个前提即我们是基督徒当然是从神而来。如果我们确定...

原创小博客
03/19
7
0

没有更多内容

加载失败,请刷新页面

加载更多

如何快速为网站选择合适的SSL证书

随着HTTPS普及,越来越多用户开始采用SSL证书,来对HTTP进行加密,升级到HTTPS。但面对各种不同的SSL证书,用户应如何选择?安信SSL证书将为大家讲解: 一、按SSL证书类型选择 DV SSL证书:域...

安信证书
32分钟前
2
0
被嫌弃的eval和with

本文转载于:专业的前端网站➥被嫌弃的eval和with 前面的话   eval和with经常被嫌弃,好像它们的存在就是错误。在CSS中,表格被嫌弃,在网页中只是用表格来展示数据,而不是做布局,都可能被...

前端老手
35分钟前
4
0
Allegro非常实用的快捷键-PCB环境

立题简介: 内容:简单介绍Allegro绘制的PCB环境下的快捷键; 来源:实际使用得出; 作用:对Allegro绘制PCB快捷键进行介绍; PCB环境:Cadence 16.6; 立题详解: 对“allegro”板而言,其在...

demyar
42分钟前
1
0
润乾报表与 ActiveReport JS 功能对比

简介 润乾报表是用于报表制作的大型企业级报表软件,核心特点在于开创性地提出了非线性报表数学模型,采用了革命性的多源关联分片、不规则分组、自由格间运算、行列对称等技术,使得复杂报表...

泡泡糖儿
43分钟前
2
0
仿微信打飞机游戏网页版,基于cocos2d-js游戏引擎,在线试玩,内含源码

早几年研究cocos2d的demo项目,这个是基于cocos2d-js游戏引擎,整个游戏用js编写。 玩法:鼠标拖动飞机移动即可 试玩地址 源码地址 游戏截图: 文件说明 cocos2dx:游戏引擎 res:存放游戏素...

tanghc
46分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部