变量与常量
更新于2022-10-22
命名规则
以字母或下划线开头,后面可以跟任意数量的字母、数字或下划线
Go使用驼峰式命名,优先使用大小写(不是下划线)分隔
| 变量名 |
导出属性 |
说明 |
| 首字符小写 |
不可导出 |
作用域仅限本包,属于该包的文件均可引用 |
| 首字符大写 |
可导出 |
该变量可以夸包引用 |
关键字
| 关键字 |
作用 |
| var |
声明变量 |
| const |
声明常量 |
声明变量
| 定义 |
描述 |
var name type = expression |
|
var name type |
当变量未指定初值时,默认为空值 |
var name = expression |
当变量未指定类型时,可以根据后续表达式的值推断变量类型 |
| Go |
|---|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 | 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 |
|---|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 | 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会抛出错误