关键字
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 |
标识符命名规范
- 标识符是由字符(AZ和az)、下划线和数字组成的,但第一个字符不能是数字。
- 标识符不能和Go语言的关键字相同。
- 标识符中不能包含空格、@、%以及$等特殊字符。
- 标识符严格区分大小写,比如A和a是两个不同的标识符。
空白标识符
空白标识符仅由下划线(_)表示,作为匿名占位符,因为Go语言定义变量且不被使用的时候,程序会提示异常,对于不被使用且存在的变量,可以使用空白标识符表示,并且能减少内存空间开支,一般用于3种场合,具体说明如下:
- 导入某个包,只执行包的初始化函数init(),不调用包的任何变量或函数,使用import _ XXX可以避免编译错误。
- 函数设有多个返回值,但程序中只使用一个返回值,不被使用的返回值可以使用空白标识符表示。
- 类型断言,判断某个类型是否实现了接口,否则编译出错。
预声明标识符
预声明标识符包含Go语言的基础数据类型和内置函数方法,这些预声明标识符也不可以当作标识符来使用。
type Student struct {
ID string;
Name string;
ClassName string;
}
先使用关键字定义变量,再使用预声明标识符设置变量的数据类型,两者在使用上有明显的先后顺序。
func main(){
var n int = 10;
fmt.Println(n)
}
导出标识符
导出标识符是程序导入某个包,并允许调用包中已定义的变量或函数方法,如字符串、整型、接口、结构体、函数方法等。导出标识符首个字母必须为大写格式,否则无法调用。
调用自定义包a下的A_test
func main() {
fmt.Println(a.A_test)
}
唯一标识符
var name string;
var Name int;
变量与常量
变量定义与赋值
func main(){
//只定义变量 不设初始值
var a int
//定义变量并设置初始值
var b int = 10
//批量定义多个变量
var (
name string
id string = "01"
)
//通过值类型反向设置变量的数据类型
c := 5
fmt.Println(a,b,name,id,c)
}
常量与iota
func main(){
//单个常量定义
const a int =1;
const b = 20
//多个常量定义
const(
name = "123"
id int =10
)
const c,d = 1,"s"
fmt.Println(a,b,name,id,c,d)
}
关键字iota是一个特殊常量,它是一个可以被编译器修改的常量。iota在关键字const出现时将被重置为0,如果关键字const定义多个常量,iota会为每个常量进行计数累加
func main() {
const(
a=iota
b
c
d
e=iota
)
fmt.Println(e)
}
运算符的使用
算术运算符
关系运算符
赋值运算符
逻辑运算符
位运算符
其他运算符
运算符优先级
代码注释
// 单行注释
/*
多行注释
*/