Go变量声明
Go变量声明方式简洁,支持var和短声明。
var声明
声明语法
Go
// 声明变量
var name string
// 声明并初始化
var name string = "Tom"
// 类型推断
var name = "Tom" // 自动推断为string
多变量声明
Go
// 同类型多变量
var a, b, c int
// 不同类型多变量
var (
name string
age int
active bool
)
批量声明
Go
var (
port int = 8080
host string = "localhost"
debug bool = true
)
短变量声明
:=语法
Go
// 短变量声明(自动推断类型)
name := "Tom"
age := 25
active := true
// 多变量短声明
a, b := 1, 2
x, y, z := 1, "hello", true
:=只能在函数内使用,不能在包级别使用。
函数内使用
Go
func main() {
// ✓ 函数内短声明
count := 10
// ✗ 包级别不能短声明
}
// ✗ 包级别短声明
count := 10 // 编译错误
声明方式对比
| 方式 | 语法 | 使用位置 |
|---|---|---|
| var | var name type | 包级别/函数内 |
| var+初始值 | var name = value | 包级别/函数内 |
| 短声明 | name := value | 仅函数内 |
| 批量var | var ( ... ) | 包级别/函数内 |
var vs :=
选择依据
Go
// 包级别必须用var
var global int = 100
// 函数内推荐:=
func main() {
local := 10 // 简洁
// 零值声明用var
var zero int // 明确零值
// 类型明确时用var
var precision float64 = 3.14
}
声明并初始化时函数内优先用:=,声明零值时用var。
声明规则
变量必须使用
Go
func main() {
var unused int // 编译错误:未使用
}
Go强制变量使用,声明未用会编译错误。
不能重复声明
Go
var name string = "Tom"
var name string // 编译错误:重复声明
name := "Tom"
name := "Jerry" // 编译错误:重复声明
短声明可部分重用
Go
func main() {
count := 10
// ✓ 部分新变量,部分重用
count, name := 20, "Tom"
// count是赋值,name是新声明
}
:=至少有一个新变量时,其他变量可以是赋值。
类型推断
Go
// 自动推断类型
var a = 10 // int
var b = 3.14 // float64
var c = "hello" // string
var d = true // bool
var e = []int{1,2} // []int
// 短声明同样推断
f := 10 // int
g := 3.14 // float64
h := "hello" // string
常见声明示例
Go
package main
// 包级别声明
var (
config Config
version string = "1.0"
)
func main() {
// 函数内短声明
name := "Tom"
age := 25
// 零值声明
var result int
// 多变量
x, y := 1, 2
// 使用变量(避免编译错误)
fmt.Println(name, age, result, x, y)
}
要点总结
- var声明:
var name type或var name = value - :=短声明:函数内简洁声明
- 包级别必须用var
- 函数内声明并初始化优先:=
- 批量声明用
var ( ... ) - 变量必须使用,未用编译错误
- 不能重复声明同一变量名
- :=至少一个新变量时可部分重用
- Go自动推断变量类型
📝 发现内容有误?点击此处直接编辑