Golang作为一门静态类型语言,变量在使用前需要先声明,不同的声明方式对应不同的使用场景,掌握这些方式能让编码更灵活高效。

Golang变量声明的核心方式
1. 标准var声明方式
这是最基础的变量声明方式,使用var关键字,语法格式为var 变量名 类型,声明后变量会被赋予对应类型的零值,比如int类型零值为0,string类型零值为空字符串。
package main
import "fmt"
func main() {
// 声明一个int类型变量,默认值为0
var age int
fmt.Println(age) // 输出0
// 声明时直接赋值
var name string = "张三"
fmt.Println(name) // 输出张三
}
2. 类型推断声明
如果声明时直接给变量赋值,可以省略类型,Golang会自动根据赋值内容推断变量类型,减少冗余代码。
package main
import "fmt"
func main() {
// 自动推断为int类型
var score = 95
// 自动推断为bool类型
var isPass = true
fmt.Printf("score类型: %T, isPass类型: %Tn", score, isPass)
}
3. 短变量声明
在函数内部可以使用短变量声明,语法为变量名 := 值,这种方式更简洁,同样支持类型推断,是函数内局部变量最常用的声明方式。
package main
import "fmt"
func main() {
// 短变量声明,自动推断为float64类型
price := 19.9
// 短变量声明多个变量
x, y := 10, 20
fmt.Println(price, x, y)
}
需要注意短变量声明只能在函数内部使用,不能在包级别使用,否则会编译报错。
4. 批量声明变量
当需要声明多个变量时,可以使用批量声明的方式,减少重复的var关键字,代码更整洁。
package main
import "fmt"
// 包级别批量声明变量
var (
appName string = "测试应用"
version int = 1
author string = "开发者"
)
func main() {
// 函数内批量声明
var (
a int = 1
b string = "hello"
)
fmt.Println(appName, version, author, a, b)
}
5. 同时声明多个变量
可以在一个var语句中同时声明多个同类型或不同类型的变量,同类型时可以省略重复的类型声明。
package main
import "fmt"
func main() {
// 声明多个同类型变量
var num1, num2, num3 int = 1, 2, 3
// 声明多个不同类型变量,需要分别指定类型
var str string, flag bool = "test", false
fmt.Println(num1, num2, num3, str, flag)
}
不同声明方式的适用场景
- 包级别变量、需要显式指定类型或者声明时不赋值的场景,优先使用标准var声明
- 函数内部局部变量,且需要简洁写法时,使用短变量声明
- 需要声明多个变量时,使用批量声明减少代码冗余
注意事项
已经声明过的变量不能再次使用短变量声明重复声明,否则会编译报错,但是如果短变量声明中至少有一个新变量,是可以和其他已声明变量一起使用的。
package main
import "fmt"
func main() {
a := 10
// 错误写法:重复声明a
// a := 20
// 正确写法:b是新变量,可以和已声明的a一起使用
a, b := 30, 40
fmt.Println(a, b)
}