标识符,你可以理解为变量名。如”int a=10;“中的a就是标识符。而在Go语言中有着许多特殊标识符,它们分别是:
- 空白标识符
- 预声明标识符
- 导出标识符
- 唯一标识符
空白标识符(Blank identifier)
下划线 ” _ “
在Go语言中,不允许”定义变量但不使用“的行为。例子如下:
package main
import "fmt"
func main() {
var str string
str = "Hello World"
}
该代码会提示“str declared and not used”,即str声明但未使用。
对于不被使用且存在的变量,可以用空白标识符表示,并且能减少内存空间开销。空白标识符常用于以下三种场合:
- 需要导入某个包,但不调用该包中的的变量或函数,只执行包的初始化函数init()。可以使用import _yourPackageName来避免编译错误。
- 函数有多个返回值,但程序只使用其中一个返回值。不被使用的返回值可以用下划线 “_”代替,而不用新建变量。
- 类型断言,判断某个类型是否实现了接口。
1和3都是后面的知识了,我们这里先来看看2的使用例。代码如下
package main
import "fmt"
func main() {
var str string
str = "Hello World"
_ = str
fmt.Printf(str)
}
该程序能正常运行,返回值为
Hello World
预声明标识符(Predeclared identifiers)
int,bool,string,true等
这个其实没啥好说的,主要是Go语言中定义变量的方式有好几种。比如
package main
func main() {
var num = 10 //定义方式一
var num1 int //定义方式二
num1=20
num2:=30 //定义方式三
_=num+num1+num2
}
定义方式一在使用关键字var的时候就定义了num=10。而定义方式二则是先定义num1变量为int类型,再定义其具体值。很明显两者有着不同的先后顺序。
导出标识符(Export identifiers)
开头字母大写
在Go语言中有的package的概念,这意味着程序可以导入某个包,并调用该包中的变量或函数方法。需要导出的变量或方法只需要让其首个字母以大写开头,即可被调用。
来看例子,先定义一个newPackage包。
package newPackage
var New_var int = 10
var new_var int = 10
在主函数中导入这个包,会发现编译器只会识别到New_var,而不会识别new_var。
package main
import (
"awesomeProject1/newPackage"
"fmt"
)
func main() {
fmt.Printf("%v", newPackage.New_var)
//fmt.Printf("%v", newPackage.new_var) 会报错
}
唯一标识符(Uniqueness of identifiers)
不允许“不同类型但名称相同”
其实就是标识符是唯一的,即使类型不一样名称也不能重复。直接看例子:
package main
import (
"fmt"
)
func main() {
var name string
var name int
}
这段代码会报错,把其中一个name改成Name或者其他的名称即可。