变量
1.声明变量
1.1 标准格式
1.1.1 var关键字定义变量
格式
说明
变量声明以关键字 var
开头,后置变量类型,行尾无需分号
var关键字可以用于声明全局变量
var 变量名 变量类型
示例
var name string
1.2 批量格式
var (
a int
b string
c []float32
d func() bool
e struct{
x int
}
)
2.初始化变量
说明
go语言在声明变量时,自动对变量对应的内存区域进行初始化操作,每个变量会初始化其类型的默认值,例如
- 整型和浮点型变量的默认值为0
- 字符串变量的默认值为空字符串
- 布尔型变量默认值为
false
- 切片、函数、指针变量默认值为
nil
2.1 标准格式
格式
var 变量名 类型 = 表达式
示例
var hp int = 100
2.2 编译器推导类型格式
格式
说明
在标准格式的基础上,将int省略后,编译器会尝试根据等括号右边的表达式推导hp变量的类型
var hp = 100
示例
var attack = 40
var damageRate float32 = 0.17
var name = xiaoming
2.3 短变量声明并初始化
var变量声明还有一种更为精简的写法,这是go语言的推导声明写法,编译器会自动根据右边表达式的值推断出相对应的类型
格式
说明
-
在函数内部,可以使用更简略的
:=
方式声明并初始化变量 -
由于使用 了
:=
,而不是赋值的=
,因此推导声明写法的左值变量必须是没有定义过的变量,若定义过,将会发生编译错误 -
短变量只能写在函数体内,不能写在包级别作用域,否则会报错
syntax error: non-declaration statement outside function body
-
短变量只能用于声明局部变量,不能用于声明全局变量
变量名 := 表达式
示例
hp := 10
错误示例
package main
import "fmt"
func main() {
// 声明变量
var hp int
// 再次声明并赋值
hp := 10
fmt.Println(hp)
}
执行报错
no new variables on left side of :=
3.匿名变量
3.1 说明
说明
-
匿名变量就是没有名字的变量
-
匿名变量的表现是一个
_
下划线,使用匿名变量时,只需要在变量声明的地方使用_
替换即可 -
匿名变量是不可引用的,无法读取或赋值
-
编译器不会为匿名变量分配空间
-
匿名变量的作用是 忽略函数返回值 和 跳过循环中的某些变量
3.2 使用示例
3.2.1 忽略返回值
package main
import "fmt"
func GetData() (int, string) {
return 18, "xiaoming"
}
func main() {
age, _ := GetData() // 通过解构赋值,只取第一个返回值,忽略第二个返回值
_, name := GetData() // 通过解构赋值,只取第二个返回值,忽略第一个返回值
fmt.Println(age, name)
}
输出
18 xiaoming
3.2.2 忽略索引和值
忽略索引
package main
import "fmt"
func main() {
names := []string{"Alice", "Bob", "Charlie"}
for _, name := range names {
fmt.Println(name) // 输出每个名字
}
}
输出
Alice
Bob
Charlie
忽略值
package main
import "fmt"
func main() {
names := []string{"Alice", "Bob", "Charlie"}
for i, _ := range names {
fmt.Println(i) // 输出索引 0, 1, 2
}
}
输出
0
1
2