变量与常量
更新于2022-10-22
命名规则
以字母或下划线开头,后面可以跟任意数量的字母、数字或下划线
Go使用驼峰式命名,优先使用大小写(不是下划线)分隔
| 变量名 | 导出属性 | 说明 |
|---|---|---|
| 首字符小写 | 不可导出 | 作用域仅限本包,属于该包的文件均可引用 |
| 首字符大写 | 可导出 | 该变量可以夸包引用 |
关键字
| 关键字 | 作用 |
|---|---|
| var | 声明变量 |
| const | 声明常量 |
声明变量
| 定义 | 描述 |
|---|---|
var name type = expression | |
var name type | 当变量未指定初值时,默认为空值 |
var name = expression | 当变量未指定类型时,可以根据后续表达式的值推断变量类型 |
go
var firstName string
var firstName, lastName string
var age int
//另一种编写前一个语句的方法是在 var 关键字后面使用括号
var (
firstName, lastName string
age int
)
//指定变量类型
var (
firstName string = "John"
lastName string = "Doe"
age int = 32
)
var (
name = "John" //go推断出变量name的类型为string
age = 32 //go推断出变量age属于int类型
)
var (
firstName, lastName, age = "John", "Doe", 32
)短变量
函数内使用:=声明的局部变量
如果在函数外,必须使用关键字var
不能重复申请相同的变量
一次申请多个短变量时每次必须保证最少有一个新的短变量
go
func main() {
firstName, lastName := "aa", "bb"
firstName, midName := "cc", "dd"
println(firstName, midName, lastName)
}匿名变量
需要定义变量
但又关心该变量时
例如: 仅关心函数部分返回值时
go
func test()(a,b,c int) {
a = 1
b = 2
c = 3
}
//只需要test函数里c的值
_,_,c = test()变量默认值
若变量未初始化,则赋默认值
| 类型 | 默认值 |
|---|---|
| int | 0 |
| float32/float64 | +0.000000e+000 |
| bool | false |
| string | "" |
| slice | nil |
| map | nil |
常量
通常以混合大小写字母或全部大写字母书写
首字母大写的全局变量对外可见
内置常量
| 关键字 | |
|---|---|
| true | 真 |
| false | 假 |
| iota | 预定义变量 |
| nil | 空值 |
若未指定常量类型,则为无类型常量
常量在赋值给变量时,只要常量数值在变量类型范围内均可
go
const HTTPStatusOK = 200
const (
StatusOK = 0
StatusConnectionReset = 1
StatusOtherError = 2
)常量生成器iota
iota遇到const变0,逐项加1
go
const(
monday = iota //monday = 0
tuesday //tudsday = 1
wednesday //3
thusrday //4
friday //5
saturday //6
sunday //7
)
const x = iota // x = 0
const y = iota // y = 0
const(
one = 1 << iota //0
two //2
four //4
eight //8
)注意事项
声明变量而不使用时,Go会抛出错误