Go语言的基础规则
命名规则
Go 的函数
、变量
、常量
、自定义类型
、包
(package)的命名方式遵循以下规则
任何需要对外暴露的名字必须以大写字母开头,不需要对外暴露的则应该以小写字母开头。
包名称
最好保持package
的名字和目录保持一致,尽量不要和标准库冲突。包名应该为小写单词,尽量不要使用下划线。
变量命名
变量名称一般遵循驼峰法,首字母根据访问控制原则大写或者小写
关键字
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 语言还有 36 个预定义标识符
append | bool | byte | cap | close | complex | complex64 | complex128 | uint16 |
---|---|---|---|---|---|---|---|---|
copy | false | float32 | float64 | imag | int | int8 | int16 | uint32 |
int32 | int64 | iota | len | make | new | nil | panic | uint64 |
println | real | recover | string | true | uint | uint8 | uintptr |
声明和使用变量
若要声明变量,需要使用 var
关键字
声明 string
类型中的一个名为firstName
的变量。
1 | var firstName string |
通过在变量名称后面添加逗号 (,
),表示将要声明其他变量。
1 | var firstName, lastName string |
另一种编写方法是在 var
关键字后面使用括号,就像通过一个专用块来声明变量
1 | var ( |
初始化变量
在 Go 中,可以通过多种方式初始化变量
1 | var ( |
初始化某个变量,不指定其类型,Go 会推断出其类型。
Go 将推断出变量 firstName
和 lastName
的类型为 string
,并且变量 age
属于 int
类型。
1 | var ( |
在 Go 中,你可以在单行中声明和初始化变量。 使用逗号将每个变量名称隔开,并对每个值执行相同的操作(按同一顺序)
1 | var ( |
还可以通过另一种方式来声明和初始化变量。 此方法是在 Go 中执行此操作的最常见方法。
1 | func main() { |
请注意,在定义变量名称后,需要在此处加入一个冒号等于号 (:=
) 和相应的值。 使用冒号等于号时,要声明的变量必须是新变量。
如果使用冒号等于号并已经声明该变量,将不会对程序进行编译。
no new variables on left side of :=
声明常量
用于声明常量的关键字是 const
。
例如,你可以按如下所示声明常量:
1 | const HTTPStatusOK = 200 |
与变量一样,Go 可以通过分配给常量的值推断出类型。
在 Go 中,常量名称通常以混合大小写字母或全部大写字母书写。
如果需要在一个块中声明多个常量,可以按如下所示执行:
1 | const ( |
注意
如果声明了变量但未使用,Go 会抛出错误
以上面的输出名字年龄为例,去掉最后的输出语句
.\demo.go:5:2: firstName declared but not used
.\demo.go:5:13: lastName declared but not used
.\demo.go:6:2: age declared but not used
如果导入包却不使用,Go 也会抛出错误如果你碰到
imported and not used
基本数据类型
Go 有四类数据类型:
- 基本类型:数字、字符串和布尔值
- 聚合类型:数组和结构
- 引用类型:指针、切片、映射、函数和通道
- 接口类型:接口
整数数字
一般来说,定义整数类型的关键字是 int
。 但 Go 还提供了 int8
、int16
、int32
和 int64
类型,其大小分别为 8、16、32 或 64 位的整数。
使用 32 位操作系统时,如果只是使用 int
,则大小通常为 32 位。 在 64 位系统上,int
大小通常为 64 位。 但是,此行为可能因计算机而不同。