02.Go 词法单元

        Go语言的词法单元包括标识符、关键字、字面量、分隔符、运算符及注释,它们是组成Go语言代码和程序的最基本的单位。

1、标识符

        标识符是一种字符序列,在Go语言中可以使用字符序列,对各种变量、常量、类型、方法、函数等进行命名。标识符由若干个字母、下画线和数字组成,且第一个字符必须是字母。标识符有两种类型:自定义标识符、预定义标识符。

a. 自定义标识符

        自定义标识符是指程序员在编程过程中自行定义的变量名、常量名、函数名等一切符合语言规范的标识符。

注意:用户自定义的标识符不应该使用语言设计者的预定义标识符,这样会导致代码语句有歧义,严重影响代码的可读性。

b. 预定义标识符

        预定义标识符是指由程序设计者在Go语言源代码中事先声明的标识符。预定义标识符包括语言的预声明标识符,以及用于后续语言扩展的保留字等。

02.Go 词法单元_第1张图片

  • 有一个特殊的标识符,即下画线。下画线也被称为空标识符,它可以用于变量的声明或赋值(任何类型都可以赋值给它),但任何赋给这个标识符的值都将被抛弃,因此这些值不能在后续的代码中使用,也不可以使用下画线作为变量对其他变量进行赋值或运算。

标识符的命名规则需要遵循以下几点:

  • (1)标识符由26个英文字母、0~9数字及下画线组成。
  • (2)标识符开头的一个字符必须是字母或下画线,标识符不能以数字开头(int 5abc是错误的)。
  • (3)标识符在Go中严格区分大小写,例如,Test和test在Go语言程序中表示两个不同的标识符。
  • (4)标识符不能包含空格。
  • (5)在Go语言中不允许标识符使用标点符号,如@、$、%等一系列符号。
  • (6)不能以系统保留关键字作为标识符,如break、if等

标识符的命名还需要注意以下几点:

  • (1)标识符的命名要尽量简短且有意义。
  • (2)不能和标准库中的包名重复。
  • (3)为变量、函数、常量命名时采用驼峰命名法,如stuName、getVal。

注意:在使用标识符之前必须进行声明,声明一个标识符就是将这个标识符与常量、类型、变量、函数或者代码包绑定在一起。在同一个代码块内标识符的名称不能重复。

2、关键字

        关键字是指语言设计者保留的具有特定语法含义的标识符,也可以称为保留字。关键字主要用来控制程序的结构,每个关键字都代表着不同语义的语法。Go语言中的关键字一共有25个。

注意:关键字不能用作常量、变量或任何其他标识符名称,也不能再声明和关键字相同的标识符。

02.Go 词法单元_第2张图片

3、字面量

        字面量代表着一种标记法,常用来表示一些固定值。但在Go语言中,字面量的含义有多种,既可以表示基础数据类型值的各种字面量,又可以表示程序员构造的自定义符合数据类型的类型字面量,还可以表示符合数据类型的值的符合字面量。

        使用字面量时,一般使用裸字符序列来表示不同类型的值。字面量还可以被编译器直接转换为某个类型的值。

a. 整型字面量

整型字面量就是使用特定的字符序列来表示具体的整型数值,它常被用于整型变量或常量的初始化

55
0550
0xHello
123456789
b. 浮点型字面量

        浮点型字面量就是使用特定的字符序列来表示一个浮点数值。浮点型字面量的表示方法有两种:数学记录法和科学计数法:

25.12
0.15
.25
.12345F+4
1.e+0
c. 复数类型字面量

        数类型字面量就是使用特定的字符序列来表示复数类型的常量值:

0i
5.e+0i
.25i
.12345F+4i
1.e+0
d. 字符型字面量

        字符型字面量就是使用特定的字符序列来表示字符型的数值。

        Go语言程序的源码通常采用UTF-8的编码方式,UTF-8的字符占用1~4B。Rune字符常量也有多种表现形式,但通常使用“' '”(单引号)将字符常量括起来:

'b'
'\t'
'\0000'
'\abc'
'\u45e3'
e. 字符串字面量

        字符串字面量通常使用“" "”(双引号)将字符序列括起来,双引号中的内容可以是UTF-8的字符字面量,也可以是其编码值:

"\n"
"hello world!\n"
"Go语言"
4、分隔符

分隔符主要用来分隔其他元素:

fmt
.
Println
(
"hello,world!"
)
  • 在以上程序中使用了小数点、括号、冒号及逗号等分隔符。
  • 括号分隔符包括括号、中括号和大括号。
  • 标点分隔符包括小数点、逗号、分号、冒号和省略号。

        无论哪种编程语言,程序代码都是通过语句来实现结构化的,但是Go语言不需要以分号进行结尾,结尾的工作都是由Go语言的编译器自动来完成的。

        当多个语句写在同一行时,它们就必须使用“;”进行分隔,但在实际开发中不提倡这种写法。

5、运算符

运算符主要用于在程序运行时执行运算或逻辑操作

02.Go 词法单元_第3张图片

                在Go语言中,一个表达式可以包含多个运算符。当表达式中存在多个运算符时,就会遇到优先级的问题,此时应该先处理哪个运算符由Go语言运算符的优先级来决定。

02.Go 词法单元_第4张图片

  • 当表达式中出现相同优先级的运算符时,可以根据从左到右的顺序依次执行操作。
  • 当遇到括号时,括号的优先级是最高的,括号中的表达式会优先执行。

注意:在Go语言中,++和—是语句,不是表达式,没有运算符优先级之说。

6、注释

        注释是源代码中最重要的组成部分之一。当Go语言的编译器遇到标有注释的代码时,编译器会自动识别并跳过标有注释的代码。注释分为单行注释和多行注释。

fmt.Println("hello,world!")  //单行注释

        多行注释又称块注释,多行注释通常以“/*”进行开头,并以“*/”进行结尾

func main() {
    /*多行注释    
    var stockcode = 123    
    var enddate = "2021-07-02"    
    var url ="Code=%d&endDate=%s"    
    var target_url = fmt.Sprintf(url, stockcode, enddate)   
    */    
    fmt.Println(target_url)
}

你可能感兴趣的:(Go语言从入门到实践,golang)