发布于 1个月前

Go语言:标识符命名规则

标识符实际是名称的另一种叫法,它包括了变量名、函数名、方法名、类型名、包名等。Go语言规定了有下面几点命名的语法要求。

首字符必须是unicode字母或者下划线(_)

先要说明,unicode字母并非只是英文字母表里的26个字母,汉字也是属于Unicode字母。对Unicode字母感兴趣的可以参考:The Unicode Standard 8.0, Section 4.5

换句话说,除了下划线(_)外的标点符号和数字都是不能作为标识符的首字符。

符合规则的名称:

Name,store,_animal,中文,한국어

违反规则的名称

7_11,$dollars,¥人民币,#store

除首字母外,后面的字符可以是unicode字母,数字和下划线

这条规则限定了组成标识符的字符构成,不能包含如空格,标点符号。

符合规则的名称

_华为_,_7_11,iphone13,int

违反规则的名称

dollar$,blank space,You&Me

Go语言标识符里字母是区分大小写的

标识符区分大小写,如Name和name表示两个不同的标识符。

保留字不能使用作为标识符

以下25个关键词是作为Go语言的保留字,不能用作标识符。

break     default      func    interface  select
case      defer        go      map        struct
chan      else         goto    package    switch
const     fallthrough  if      range      type
continue  for          import  return     var

Go语言只限制了以上保留字不能作为标识符,其他符合规则的名称都可以使用,但Go语言还有一些是预声明和内置的常量名,类型名以及函数名:

常量名  true  false  iota  nil

类型名  int  int8  int16  int32  int64
        uint  uint8  uint16 uint32 uint64
        float32  float64  complex128  complex64
        bool byte  rune  string error

函数名  make len cap new append  copy  close  delete  
        complex real  imag panic recover

虽然这些名称不是保留字,为了避免产生歧义,强烈建议不要把他们作为标识符使用

标识符字符长度不限

虽然Go语言规则上没有限制,在Go语言官方在规范上是推荐使用短的变量名称,特别是作用域比较小的本地变量。如在for循环中使用i,而非indexOfLoop。

有这样一个规则:作用域小的变量,在不影响代码可读性的前提下,尽量使用短的名称;而应用在大作用域的变量,使用更具描述性的名称,这样名称相对长点

标识符可见性:要在package外公开的标记符必须以大写字母开头

Go语言中,标记符的可见范围是由标识符是定义所在的位置以及它名称首字母确定。

1. 位置:函数内定义,首字符无关

在函数内定义的标记符,可见范围也就是作用域是在函数内部,即函数本地。

2. 位置:函数外定义,首字母小写

在函数外定义的标记符,不管首字母是否大写,在声明为同一个package里的所有文件里是可见的。但对于不在同一package的文件,小写开头的标记符是不可见的。

如:test1.go 文件

package test
import "fmt"
func visibleInPkg() {
  fmt.Printf("inside package")
}
func VisibleOutside() {
  fmt.Printf("outside package")
}

test2.go文件

package test
func test2() {
  visibleInPkg()
}

3. 位置函数外定义,首字母为大小

如果要在package外使用定义的标记符,如函数,那么它的标记符首字母必须大写,如fmt的Printf()函数。

如:test3.go

package testoutside
import "test"
func test() {
  test.VisibleOutside()
}

规范:同一使用驼峰式命名

这是一个Go语言的命名规范,不是必须的规则。目前计算机语言对于由多个单词构成的名称,一般由两种做法:

  1. 驼峰式命名,分为小驼峰法和大驼峰法。
  2. 单词之间使用下划线隔开

小驼峰法第一个单词以小写字母开始,第二个单词的首字母大写或每一个单词的首字母都采用大写字母。如

firstName,lastName

相比小驼峰法,大驼峰法把第一个单词的首字母也大写了

FirstName,LastName
go
©2020 edoou.com   京ICP备16001874号-3