用Go语言编写的程序都是从基本组件构成,而构成这些基本组件的是标识符,本章中将介绍到Go语言中使用到变量,常量以及基本数据类型。
标识符是函数、变量、常量、自定义类型以及包的名称的总称,在Go语言中,标识符的命名遵循以下的规则:标识符任意字母或者下划线开始,后面可以跟任意的字符,数字或者下划线,并区分大小写,如:
a_1 // 合法标识符
_a1 // 合法标识符
1_a // 非合法标识符
在Go语言中,标识符分为预定义标识符和可自定义标识符。预定义标识符是指Go语言中预先定义好的标识符,包括关键字,内置数据类型标识符,常量值标识符,内置函数和空白标识符。以关键字为例,Go语言中预定义了25个关键字:
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语言中,变量是通过var
关键字声明的,声明格式为:var identifier type
。如:
var a int
定义了一个整形变量a
,在没有初始化的情况下,整形变量默认为0。
在定义了变量后需要对变量初始化,完整的初始化方式如下:
a = 1
对于新定义的变量,通常在声明变量的同时对变量初始化,初始化的方式为:
var a int = 1 // 完整声明+初始化
var b = 2 // 提供初始化值,可省略变量类型,由编译器⾃自动推断
c := 3 // 适用于局部变量
var a, b int = 1,2
var (
a int
b float32
)
a = 1
b = 2.1
常量值必须是编译期可确定的数字、字符串、布尔值,通过const
关键字可以定义常量:
const s string = "hello world"
const a int = len(s) // 在编译期运行的常量表达式
Go语言中有一些预定义常量,如:true
、false
和iota
。预声明标识符iota
用在常量声明中,其初始值为0,在一组多个常量同时声明时,其值会自动加1,如:
const (
a_1 = iota // 0
a_2 = iota // 1
a_3 = iota // 2
)
在其他的语言中(如C语言中)用enum
作为关键字表示枚举类型,枚举是一系列常量的表示,在Go中,通过const
关键字来表示枚举类型,如:
func main() {
const (
Zero = iota
One
Two
Three
)
fmt.Println(Zero)
fmt.Println(One)
fmt.Println(Two)
fmt.Println(Three)
}