Golang var 关键字
最后修改于 2025 年 5 月 7 日
本教程将讲解如何在 Go 中使用 var 关键字。我们将通过不同用法的实际示例来介绍变量声明基础知识。
var 关键字用于在 Go 中声明变量,可以选择性地为其初始化值。它用于显式声明带类型的变量。
在 Go 中,var 可以声明单个变量、多个变量和包级变量。它提供了清晰的类型规范和初始化控制。
基本变量声明
var 最简单的用法是声明一个带有类型的单个变量。此示例展示了基本的变量声明。
package main
import "fmt"
func main() {
var age int
age = 30
fmt.Println("Age:", age)
}
变量 age 被声明为 int 类型,之后为其赋值。初始时分配整数的零值(0)。
带初始化的变量
var 可以在一条语句中声明并初始化变量。此示例展示了带即时初始化的声明。
package main
import "fmt"
func main() {
var name string = "Alice"
var height float64 = 1.75
fmt.Println("Name:", name)
fmt.Println("Height:", height)
}
两个变量都已声明了它们的类型和初始值。当初始化器提供足够的类型信息时,可以省略类型。
使用 var 进行类型推断
Go 可以从初始化器推断变量类型。此示例使用 var 关键字演示了类型推断。
package main
import "fmt"
func main() {
var active = true
var count = 42
var price = 19.99
fmt.Printf("active: %T, %v\n", active, active)
fmt.Printf("count: %T, %v\n", count, count)
fmt.Printf("price: %T, %v\n", price, price)
}
变量根据赋给它们的值获得类型:bool、int 和 float64。%T 动词显示了推断出的类型。
多个变量声明
var 可以在一条语句中声明多个变量。此示例展示了声明多个变量的不同方法。
package main
import "fmt"
func main() {
var x, y int = 10, 20
var a, b = "hello", true
var (
name = "Bob"
age = 25
)
fmt.Println(x, y)
fmt.Println(a, b)
fmt.Println(name, age)
}
变量可以声明为相同类型、不同类型或在块中。括号创建了一个声明块,以提高可读性。
包级变量
var 可以在包作用域声明变量。这些变量在整个包中可访问。此示例展示了包级变量。
package main
import "fmt"
var globalCount = 0
func increment() {
globalCount++
}
func main() {
fmt.Println("Initial count:", globalCount)
increment()
increment()
fmt.Println("Final count:", globalCount)
}
globalCount 在包内的所有函数中都可访问。包变量存在于程序的整个生命周期。
使用 var 的零值
使用 var 声明的变量在未初始化时会接收零值。此示例演示了默认的零值。
package main
import "fmt"
func main() {
var i int
var f float64
var b bool
var s string
fmt.Printf("int: %v\n", i)
fmt.Printf("float64: %v\n", f)
fmt.Printf("bool: %v\n", b)
fmt.Printf("string: %q\n", s)
}
零值对于数字是 0,对于布尔值是 false,对于字符串是 ""。%q 动词将空字符串显示为 ""。
var 与短声明
此示例将 var 与短声明语法进行对比,以突出它们的区别。
package main
import "fmt"
var packageVar = "I'm a package variable"
func main() {
// Using var
var functionVar = "I'm a function variable"
// Short declaration
shortVar := "I'm a short declaration"
fmt.Println(packageVar)
fmt.Println(functionVar)
fmt.Println(shortVar)
// Re-declaration with short syntax
shortVar, anotherVar := "changed", "new"
fmt.Println(shortVar, anotherVar)
}
var 可在包级别和函数级别工作,而短声明仅限于函数。短语法允许在声明新变量时重新声明。
来源
本教程通过变量在各种场景下声明的实际示例,介绍了 Go 中的 var 关键字。