Go程序设计语言1.8 其他内容-阿里云开发者社区

开发者社区> 华章计算机> 正文

Go程序设计语言1.8 其他内容

简介:
+关注继续查看

1.8 其他内容


Go里面的东西远比这个快速入门中介绍的多。这里是一些很少提及或者完全忽略掉的主题,下面简单地介绍一下这些主题,以便读者在用到时能够熟悉这些内容。

控制流:我们前面介绍了两个基础的控制语句if和for,但没有介绍switch语句,它是多路分支控制。这里有一个例子:

 

coinflip的调用结果会和每一个条件的值进行比较。case语句从上到下进行推演,所以第一个匹配的case语句会被执行。如果没有其他的case语句符合条件,那么可选的默认case语句将被执行。默认case语句可以放在任何地方。case语句不像C语言那样从上到下贯穿执行(尽管有一个很少使用的fallthrough语句可以改写这个行为)。

switch语句不需要操作数,它就像一个case语句列表,每条case语句都是一个布尔表达式:

 

这种形式称为无标签(tagless)选择,它等价于switch true。

与for和if语句类似,switch可以包含一个可选的简单语句:一个短变量声明,一个递增或赋值语句,或者一个函数调用,用来在判断条件前设置一个值。

break和continue语句可以改变控制流。break可以打断for、switch或select的最内层调用,开始执行下面的语句。正如我们在1.3节中看到的,continue可以让for的内层循环开始新的迭代。语句可以标签化,这样方便break和continue引用它们来跳出多层嵌套的循环,或者执行最外层循环的迭代。这里还有一个goto语句,通常在机器生成的代码中使用,程序员一般不用它。

命名类型:type声明给已有类型命名。因为结构体类型通常很长,所以它们基本上都独立命名。一个熟悉的例子是定义一个2D图形系统的Point类型:

 

类型声明和命名将在第2章讲述。

指针:Go提供了指针,它的值是变量的地址。在一些语言(比如C)中,指针基本是没有约束的。其他语言中,指针称为“引用”,并且除了到处传递之外,它不能做其他的事情。Go做了一个折中,指针显式可见。使用&操作符可以获取一个变量的地址,使用*操作符可以获取指针引用的变量的值,但是指针不支持算术运算。这将在2.3.2节进行介绍。

方法和接口:一个关联了命名类型的函数称为方法。Go里面的方法可以关联到几乎所有的命名类型。方法在第6章讲述。接口可以用相同的方式处理不同的具体类型的抽象类型,它基于这些类型所包含的方法,而不是类型的描述或实现。接口是第7章的主题。

包:Go自带一个可扩展并且实用的标准库,Go社区创建和共享了更多的库。编程时,更多使用现有的包,而不是自己写所有的源码。本书将指出一些比较重要的标准库包,但是这些包太多了,本书无法一一展示,并且也无法提供诸如包的完整参考手册之类的东西。

在着手新程序前,看看是否已经有现成的包。可以在https://golang.org/pkg找到标准库包的索引,社区贡献的包可以在https://godoc.org找到。使用go doc工具可以方便地通过命令行访问这些文档:

 

注释:我们已经在程序或包的开始提到文档注释。在声明任何函数前,写一段注释来说明它的行为是一个好的风格。这个约定很重要,因为它们可以被go doc和godoc工具定位和作为文档显示(参考10.7.4节)。

对于跨越多行的注释,可以使用类似其他语言中的/*...*/注释。这样可以避免在文件的开始有一大块说明文本时每一行都有//。在注释内部,//和/*没有特殊的含义,所以注释不能嵌套。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Confluence 6 影响语言的其他设置
一个独立的用户可以在 Confluence 中选择应用到界面文字和消息中的语言。请注意,支持的语言类型基于在 Confluence 中安装的语言包。
877 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
4617 0
阿里云服务器安全组设置内网互通的方法
虽然0.0.0.0/0使用非常方便,但是发现很多同学使用它来做内网互通,这是有安全风险的,实例有可能会在经典网络被内网IP访问到。下面介绍一下四种安全的内网互联设置方法。 购买前请先:领取阿里云幸运券,有很多优惠,可到下文中领取。
9513 0
【C语言】学习笔记10——其他数据结构
1. 联合:能在同一内存空间中存储不同的数据类型(不是同时存储)。典型用法是,设计一种表以存储既无规律、事先也不知道顺序的混合类型。 下面是一个代表及的联合模板 union hold { int digit; double bigfl; char letter; } 根据以上形式声明的类型可以存储一个int类型或一个double类型或一个char类型的值。
735 0
一文带你了解Java其他基础类库 | 带你学《Java语言高级特性》之十九
了解了几个Java主要的基础类库后,还有如System、Cleaner等类库在Java开发运行过程中起着重要的作用,来随作者一起来看看这些类库为开发者提供了哪些帮助吧。
894 0
10059
文章
0
问答
来源圈子
更多
+ 订阅
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载