购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.1 关键字和标识符

Go语言的词法元素包括5种,分别是关键字、标识符、操作符、分隔符和字面量,它们是组成Go语言代码和程序的基本单位。本节主要介绍Go语言中的关键字和标识符。

2.1.1 关键字

关键字也称保留字,是指在Go语言中有特定含义,成为Go语言语法中一部分的单词。Go语言中的关键字一共有25个,如表2.1所示。

表2.1 Go语言的关键字

在程序中,每个关键字都有着不同的功能含义,具体说明如表2.2所示。

表2.2 关键字及其功能描述

Go语言中保留的关键字比较少,主要是为了简化编译过程中的代码解析。和其他语言一样,关键字不能作为标识符,否则程序会提示语法错误。

2.1.2 标识符命名规则

标识符是用户在编程时定义的名字,用于为各种变量、常量、方法、函数等命名。标识符的命名规则如下。

由26个英文字母、数字0~9、下画线组成,但不能以数字开头。

Go语言中的标识符严格区分大小写。例如,UserName与username代表两个不同的标识符。

标识符不能包含空格和特殊字符。

不能以关键字作为标识符,如switch、if、for等。

合法的标识符定义如下。

    username
    num1
    next_city

不合法的标识符定义如下。

虽然标识符可以任意命名,但是在编程时,最好还是使用便于记忆且有意义的名称,以增加程序的可读性。标识符的命名标准如下。

标识符的命名要尽量简短且有意义。

使用有意义的单词作为标识符,如名字定义为name,宽度定义为width。

如果不能使用一个单词命名标识符,则可以采用驼峰命名法,如myBook、getValue。或使用下画线“_”连接所有单词,如next_score。

2.1.3 空白标识符

空白标识符是由下画线“_”表示的特殊标识符,对于不被使用且存在的变量,可以使用空白标识符表示。空白标识符通常用于以下3种场景。

导入某个包,不调用包的任何变量或函数,只执行包的初始化函数init()。

函数有多个返回值,但只需要使用一个返回值,不使用的返回值使用空白标识符表示。

类型断言,判断某个类型是否实现接口,没有实现则报告编译错误。

在函数中使用空白标识符表示不需要使用的返回值,代码如下。

2.1.4 导出标识符

Go语言中的标识符首字母可以大写,如果包中定义的标识符首字母大写,则表示它可以被外部调用,这样的标识符叫作导出标识符。下面通过一个示例介绍导出标识符的用法。

在D:\GoProject路径下,新建文件夹src,并在VS Code中打开src文件夹,再在src文件夹下新建文件夹test;在test文件夹中创建demoA.go文件。在demoA.go文件中定义包test,再分别定义变量Name、Age和Myfunc()函数。代码如下。

在D:\GoProject\src路径下,创建demoB.go文件。在demoB.go文件中导入自定义包test,并分别调用包中定义的变量和函数。代码如下。

在编写demoB.go文件的过程中,import代码中的“test”会一直提示错误。为了消除这个错误需要对Go语言开发环境进行设置。虽然已经通过设置环境变量把项目文件夹存放在GOPATH目录(即D:\GoProject)下(参照图1.16),但是“set GO111MODULE=on”配置项(参照图1.21)不让Go命令行在GOPATH目录下查找.go文件。也就是说,本示例如果不修改“set GO111MODULE=on”配置项,那么Go命令行就找不到demoB.go文件。

为了让Go命令行在GOPATH目录下查找demoB.go文件,需要把“set GO111MODULE=on”配置项修改为“set GO111MODULE=off”。修改步骤为:打开命令提示符对话框,输入“go env -w GO111MODULE=off”,按Enter键。

在退出命令提示符对话框后,务必重启VS Code。重新进入VS Code后就会发现import代码块中“test”处的错误提示消失了。运行demoB.go文件,结果如下。

    姓名:张三
    年龄:20
    地址:吉林省长春市

由此可知,在导入某个包时,如果包中定义的标识符的首字母大写,则该标识符可以被外部调用。

说明

后面的章节将启用Module功能。为了不影响后面章节的学习,在得到本示例的运行结果后,建议在命令提示符对话框中输入“go env -w GO111MODULE=on”,把“set GO111MODULE=off”配置项再修改为“set GO111MODULE=on”。

2.1.5 预定义标识符

在Go语言中还有一些特殊的标识符,叫作预定义标识符。预定义标识符包含Go语言的基本数据类型和内置方法,这些预定义标识符不能作为普通标识符使用。Go语言中的预定义标识符如表2.3所示。

表2.3 预定义标识符 krPk5/rRzeDuEYFCVhyMFPKHV/7YTbQNAg2Knm4WWsvNETjJsnPmreKe3paNaYqm

点击中间区域
呼出菜单
上一章
目录
下一章
×