2 程序结构
- 关键字、运算符、基本类型及表达式
2.1 程序元素
- 5种符号,标识符、关键字、运算符、分隔符与字面量
- 是组成Go代码的最基本单位,
- 这5种符号共同组成各种表达式和语句
2.1.1标识符
- 标识变量、函数或任何用户自定义项目的名称(程序实体)
- 用户定义的标识符,它作为程序实体存在,同一个代码块中不允许程序实体同名,使用不同代码包中的实体需要使用包标识符声明,
- fmt.Println表示的是用fmt包中的Println标识符
- 预定义标识符,在Go源码中声明
- 数据类型:bool(true和 false)、
- byte、 uintl6、
- float32、 floate64、
- int、int8、intl6、
- uint32、int32、
- int64、uint64、
- string、uint、uint8、 uintptr;
- 内建函数名:
- append、cap、 close、
- complex、copy、 delete、
- imag、en、make、new、
- panic、pint、 println、
- real、 recover;
- 其他标识符:iota、nil、_
- _叫空标识符,用在变量声明与包的导入中
- 若存在一个没用的变量a,编译报错,
- Go要求存在实体必须使用,
- =a,编译器会认为使用了a变量
- 实际没对a操作
- 程序初始化后空标识符就被释放
- 标识符以字母a~z(大小写)或下画线开头
- 后面可多个字母、下画线和数字
- 不允许在标识符中用标点符号,例如@、$、%等符号
- Go区分大小写
2.1.2关键字
-
作为一门静态编译型语言,关键字25个,相比其他语言非常少,
-
包导入与声明: Import、 package。
-
程序实体声明与定义:var、type、func、 interface、map、 struct、chan、 const
-
流程控制:if、 continue、for、 return、go、case、goto、 switch、 select、else、 break
default、 defer、 fallthrough、 range -
也称保留字,不能用作常量、变量或任何其他标识符名称。
-
还有一个比较特殊的类型叫作空接口,它的字面量是“_”
2.1.3字面量
- 表示值的一种标记法,Go中,字面量的含义要更广些
- 表示基础数据类型值的各种字面量
- 表示用户构造的自定义复合数据类型的类型字面量
- 表示复合数据类型的值的复合字面量,
- 会被用来构造类型 Struct(结构体)、 Array(数组)、Sice(切片)和Map(字典)的值。
2.1.4 分隔符
- 分隔其他元素
- fmt.Println(“Hell, World!”)中含6个标记
- 程序中使用的括号分隔符
- 括号、中括号和大括号。
- 标点分隔符包括
- 小数点、逗号、分号、冒号和省略号。
- Go不要;结尾,这些工作由编译器自动完成
- 如果将多个语句写在同一行,就必须用;分隔
2.1.5运算符
- Go中一元运算优先级高于二元运算符
- 表达式中出现相同优先级的运算符,从左到右操作
- 括号内先操作,和数学运算法则无异
- Go中,+和-是语句,不是表达式,没有运算符优先级之说。
- Go不支持运算符重载。