1. 使用 var
关键字声明变量
1.1 声明单个变量
使用 var
关键字可以声明一个变量,并且可以选择初始化它。
var a int // 声明一个int类型的变量,默认值为0
var b string // 声明一个string类型的变量,默认值为空字符串
var c bool // 声明一个bool类型的变量,默认值为false
var d int = 10 // 声明并初始化一个int类型的变量
var e string = "Hello" // 声明并初始化一个string类型的变量
var f bool = true // 声明并初始化一个bool类型的变量
1.2 声明多个变量
可以在一行中声明多个变量。
var g, h, i int // 声明三个int类型的变量
var j, k, l = 1, "two", false // 声明并初始化多个变量
1.3 分组声明变量
使用括号分组可以声明多个变量,提升代码的可读性。
var (
m int
n string
o bool
)
2. 使用短变量声明
短变量声明使用 :=
操作符,可以在函数内部声明和初始化变量。不能用于包级别变量声明。
p := 20 // 声明并初始化一个int类型的变量
q := "World" // 声明并初始化一个string类型的变量
r := false // 声明并初始化一个bool类型的变量
3. 变量的类型推断
如果在声明时初始化了变量,Go可以根据值的类型推断变量的类型。
s := 30 // 推断s为int类型
t := "Hello, Go" // 推断t为string类型
u := 3.14 // 推断u为float64类型
4. 零值
在Go中,声明但未初始化的变量会赋予其类型的零值。
var v int // 零值为0
var w string // 零值为空字符串""
var x bool // 零值为false
var y *int // 零值为nil
5. 匿名变量
在多重赋值中,使用匿名变量 _
可以忽略某些值。
func foo() (int, int) {
return 1, 2
}
a, _ := foo() // 只获取第一个返回值,忽略第二个返回值
_, b := foo() // 只获取第二个返回值,忽略第一个返回值
6. 变量的作用域
变量的作用域决定了变量的可见性和生命周期。变量作用域包括包级别作用域和函数级别作用域。
6.1 包级别作用域
在函数外声明的变量具有包级别作用域,对同一个包内的所有文件可见。
package main
import "fmt"
var globalVar = "I'm global"
func main() {
fmt.Println(globalVar) // 可以访问globalVar
}
6.2 函数级别作用域
在函数内部声明的变量具有函数级别作用域,仅在函数内部可见。
package main
import "fmt"
func main() {
localVar := "I'm local"
fmt.Println(localVar) // 可以访问localVar
}
// fmt.Println(localVar) // 无法访问localVar,编译错误
7. 示例代码
以下是一个包含各种变量声明方式的完整示例代码:
package main
import "fmt"
var packageVar = "Package Level Variable"
func main() {
var a int // 声明一个int类型的变量,默认值为0
a = 10
b := "Function Level Variable" // 使用短变量声明
var (
c int
d string = "Grouped Variable"
)
e, f := 20, "Multiple Variables" // 声明并初始化多个变量
fmt.Println(packageVar)
fmt.Println(a)
fmt.Println(b)
fmt.Println(c)
fmt.Println(d)
fmt.Println(e, f)
// 使用匿名变量
g, _ := foo()
_, h := foo()
fmt.Println(g)
fmt.Println(h)
}
func foo() (int, string) {
return 1, "Hello"
}
版权声明:如无特殊说明,文章均为本站原创,转载请注明出处
本文链接:http://example.com/subject/article/90/
许可协议:署名-非商业性使用 4.0 国际许可协议