Go语言中的特殊标识符

空白、预声明、导出、唯一

标识符,你可以理解为变量名。如”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声明但未使用。

对于不被使用且存在的变量,可以用空白标识符表示,并且能减少内存空间开销。空白标识符常用于以下三种场合:

  1. 需要导入某个包,但不调用该包中的的变量或函数,只执行包的初始化函数init()。可以使用import _yourPackageName来避免编译错误。
  2. 函数有多个返回值,但程序只使用其中一个返回值。不被使用的返回值可以用下划线 “_”代替,而不用新建变量。
  3. 类型断言,判断某个类型是否实现了接口。

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或者其他的名称即可。

Subscribe
提醒
0 评论
Inline Feedbacks
View all comments
0
在此留下你的评论x