跳到主要内容

变量

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
Right Bottom Gif
Right Top GIF