老9乐购邀请码【25295678】,GO语言的包和函数

栏目: Go · 发布时间: 4年前

老9乐购最高邀请码【25295678】,不用再找其他的码了,再也没有比这个高的了,随时可能失效! 摘要: 还记得《【2】Sublime配置 GO 开发环境》的入门例子吗? 当然不记得了:) 这篇文章距离上篇时间太久远了,遥远的我都快忘记了。还是把截图贴上吧 该例子中的func main()表示这是一个名称叫main的方法,而package main表示这个方法在main包内,这两部分的内容就是本节要分享的知识。 还记得《【2】Sublime配置GO开发环境》的入门例子吗? 当然不记得了:) 这篇文章距离上篇时间太久远了,遥远的我都快忘记了。还是把截图贴上吧 wKiom1VyXUySUg-RAAFLOm4XEBo344.jpg 该例子中的func main()表示这是一个名称叫main的方法,而package main表示这个方法在main包内,这两部分的内容就是本节要分享的知识。 这么简单? 是的,简单而不简约,呵呵,接着往下看! 开发一个应用系统,考虑到代码的可读性,往往会把代码拆分到不同的包,再给包起一个好记的名字,这样一眼就能明白该包的用途,比如math包,这个就是Go语言本身的数学相关包,该包下面有求绝对值的源文件abs.go,还有求正弦的asin.go等...... 1、那么什么是包?先看个例子: 在E:\GO\workspace\pwm\src\util下创建一个common.go源文件,里面填写如下内容 wKiom1WEubOCL159AADGA5swt3o258.jpg 上面的common.go代码通过“package关键字”指定了它所属的包(common),接下来就是如何使用common.go中的IsEmpty()函数呢? 在E:\GO\workspace\pwm\src下创建一个launcher.go源文件,里面填写如下内容 wKioL1WEvLDA4dYlAACwCf6nSmo771.jpg 上面的launcher.go通过“import关键字”把包(common)所在的路径(util)导入进来,然后再通过“包名.函数名(common.IsEmpty())”的方式实现调用。 备注: 到这里可能有人疑惑了,怎么会这样呢?平时调用时都是类似如下的方式写的: import fmt fmt.Println("import fmt,then use fmt's function to invoke") 解释:之所以能这样写的原因是“包名”和“路径”使用了相同的名称。这里为了把包表述清楚,故意把“包”和“包所在路径”使用了不同的名称。 2、函数 函数是由关键字func、函数名、参数列表、返回值、函数体构成,如下: wKioL1WKqyGgw0L6AAB7K6GYY48275.jpg (1)如果参数列表中类型相同的参数,如上例可以简写为: func Add(a, b int)(ret int, err error){ return a + b, nil } (2)当然调用该函数时,调用者不关心返回值,甚至不会使用返回变量名,所以上例可以再简写为: func Add(a, b int)(int, error){ return a + b, nil } (3)初次使用GO的读者可能对“多返回值”感兴趣,以前使用别的语言时都是费劲心机地想返回多个值,没有想到GO帮着程序猿实现了 :) 3、函数的不定参数 不定参数并不是新兴事物,Java6已有该事物。所谓不定参数即不清楚参数个数具体是多少,以例子来说明: func Join(a, b string) string { return a + b } 该函数实现两个入参字符串的连接,由于入参只有两个,所以调用者只需要Join("a", "b")即可。 请接着向下想,若需要把多个字符串连接起来呢?你可能想到是把入参变为字符串数组,如下: func Join(a []string) string { joinStr := "" for _, element := range a { joinStr += element } return joinStr } 但这样又带来一个调用问题,即调用者必须先初始化一个数组或者切片再进行调用,如下: s := []string{"a", "b", "c", "d", "e"} fmt.Println(common.Join(s)) 若想让调用者不构造数组或者切片,就像一般字符串一样对待入参,此时就涉及到“不定参数”的概念,如下: func Join(a ...string) string { joinStr := "" for _, element := range a { joinStr += element } return joinStr } 与上面的写法仅在于入参采用“...string”,调用者就像对待一般字符串,如下: fmt.Println(common.Join("a", "b", "c", "d", "e")) 这种不定参数看着比较优雅,同时也存在一个问题:若入参不全是同一种类型呢?比如入参中即有字符串也有整形,此时必须把不定参数放在最后,否则会报类似can only use ... as final argument in list错误 func Join(i int, a ...string) string { fmt.Println("----------------", i) joinStr := "" for _, element := range a { joinStr += element } return joinStr } 4、结束语 我看过许式伟、云动力关于GO的书,还有无闻的视频,都谈及到闭包的问题,其实闭包概念很久之前JS就在使用,这里不想再谈闭包的问题,因为在程序的编写过程中我认为一切都是顺其自然的,写过一定代码之后自然就会考虑代码的优雅性,不留意间就使用到了闭包。

入群交流(该群和以上内容无关):Go中文网 QQ交流群:731990104 或 加微信入微信群:274768166 备注:入群; 公众号:Go语言中文网


以上所述就是小编给大家介绍的《老9乐购邀请码【25295678】,GO语言的包和函数》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

精通Spring 4.x

精通Spring 4.x

陈雄华、林开雄、文建国 / 电子工业出版社 / 2017-1-1 / CNY 128.00

Spring 4.0是Spring在积蓄4年后,隆重推出的一个重大升级版本,进一步加强了Spring作为Java领域第一开源平台的翘楚地位。Spring 4.0引入了众多Java开发者翘首以盼的基于Groovy Bean的配置、HTML 5/WebSocket支持等新功能,全面支持Java 8.0,最低要求是Java 6.0。这些新功能实用性强、易用性高,可大幅降低Java应用,特别是Java W......一起来看看 《精通Spring 4.x》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

html转js在线工具
html转js在线工具

html转js在线工具