变量
关键字 var
, 定义后可以修改。
语法规则
- • var 关键字
var 变量名称 [变量类型] = 变量值
# 例子
var pi float = 3.14159
其中,变量类型为可选,因为编译器可以根据值来推断其类型 (建议指定类型,可以增强语义性)。
- • 直接定义
变量名称 := 变量值
# 例子
pi := 3.14159
其中,不需要变量类型,因为编译器可以根据值来推断其类型。
注意事项
在函数中定义的变量,定义后必须使用,否则编译时会报错: Unused variable 'pi'
同时定义多个变量
var (
变量名称 [变量类型] = 变量值
变量名称 [变量类型] = 变量值
变量名称 [变量类型] = 变量值
...
)
例子
package main
func main() {
var (
pi float64 = 3.14159
page int = 1
name = "abc"
)
println(pi)
println(page)
println(name)
}
// $ go run main.go
// 输出如下
/**
+3.141590e+000
1
abc
*/
显式/隐式
-
- 浮点类型
-
• 显式类型定义:
var pi float64 = 3.14159
-
• 隐式类型定义:
var pi = 3.14159
-
- 整型
-
• 显式类型定义:
var page int = 1
-
• 隐式类型定义:
var page = 1
-
- 字符串
-
• 显式类型定义:
var name string = "abc"
-
• 隐式类型定义:
var name = "abc"
-
- 其他类型以此类推
空白标识符
_
是一个特殊的标识符,被称为空白标识符。 它可以像其他标识符那样用于变量的声明或赋值(任何类型都可以赋值给它),但任何赋给这个标识符的值都将被丢弃, 因此这些值不能在后续的代码中使用,也不可以使用这个标识符作为变量对其它变量进行赋值或运算。
示例
避免 “变量未使用” 错误
当定义一个变量后,一直未使用 (或者由于某些逻辑分支执行不到),为了避免运行报错,可以将其赋值给空白标识符。
package main
func main() {
n := 1024
_ = n // 如果没有这行代码,就会报错 Unused variable 'n'
}
忽略错误
package main
import "strconv"
func main() {
n, _ := strconv.Atoi("1024") // 函数的第 2 个返回值是一个错误类型值
println(n)
}
// $ go run main.go
// 输出如下
/**
1024
*/
常量
关键字 const
, 和其他编程语言中常量的语义一样,定义后无法修改。
语法规则
const 常量名称 [常量类型] = 常量值
# 例子
const Pi float = 3.14159
其中,常量类型为可选,因为编译器可以根据值来推断其类型 (建议指定类型,可以增强语义性)。
同时定义多个常量
const (
常量名称 [常量类型] = 常量值
常量名称 [常量类型] = 常量值
常量名称 [常量类型] = 常量值
...
)
例子
package main
const (
Sunday = 0
Monday = 1
Tuesday = 2
Wednesday = 3
Thursday = 4
Friday = 5
Saturday = 6
)
func main() {
println(Sunday)
println(Monday)
println(Tuesday)
println(Wednesday)
println(Thursday)
println(Friday)
println(Saturday)
}
// $ go run main.go
// 输出如下
/**
0
1
2
3
4
5
6
*/
显式/隐式
-
- 浮点类型
-
• 显式类型定义:
const Pi float64 = 3.14159
-
• 隐式类型定义:
const Pi = 3.14159
-
- 整型
-
• 显式类型定义:
const Page int = 1
-
• 隐式类型定义:
const Page = 1
-
- 字符串
-
• 显式类型定义:
const Name string = "abc"
-
• 隐式类型定义:
const Name = "abc"
-
- 其他类型以此类推
赋值规则
常量的值必须在编译时就能确定。
-
• 正确的:
const N = 10/2
-
• 错误的:
const N = getNumber() // 引发构建错误: getNumber() used as value