变量的来历

程序运行过程中的数据都是保存在内存中,我们想要在代码中操作某个数据时就需要去内存上找到这个变量,但是如果我们直接在代码中通过内存地址去操作变量的话,代码的可读性会非常差而且还容易出错,所以我们就利用变量将这个数据的内存地址保存起来,以后直接通过这个变量就能找到内存上对应的数据了。

变量(Variable)的功能是存储数据。不同的变量保存的数据类型可能会不一样。
Go语言中的每一个变量都有自己的类型,并且变量必须经过声明才能开始使用
同一作用域内不支持重复声明,并且Go语言的变量声明后必须使用

变量的本质就是一小块内存,用于存储数据,在程序运行过程中数值可以改变

变量的初始化

Go语言在声明变量的时候,会自动对变量对应的内存区域进行初始化操作。每个变量会被初始化成其类型的默认值,例如: 整型和浮点型变量的默认值为0字符串变量的默认值为空字符串布尔型变量默认为false切片、函数、指针变量的默认为nil

当然我们也可在声明变量的时候为其指定初始值。变量初始化的标准格式如下:

var 变量名 类型 = 表达式
举个例子:

var name string = “qinxi” var age int = 25

或者一次初始化多个变量

var name, age = “qinx”, 20

声明单一变量

声明变量的一般形式是使用 var 关键字:
var name type
其中,var 是声明变量的关键字,name 是变量名,type 是变量的类型,行尾无需分号。

  1. package main
  2. import "fmt"
  3. func main() {
  4. var age int
  5. fmt.Println("my age is", age)
  6. }

输出如下:

  1. my age is 0

Go语言的基本类型有: bool string int、int8、int16、int32、int64 uint、uint8、uint16、uint32、uint64、uintptr byte // uint8 的别名 rune // int32 的别名 代表一个 Unicode 码 float32、float64 complex64、complex128

声明一个带初值的变量

在声明变量时可以指定其初始值。
声明一个带初值的变量的语法为:var name type = initialvalue,例如:

  1. package main
  2. import "fmt"
  3. func main() {
  4. var age int = 25
  5. fmt.Println("my age is", age)
  6. }

输出如下:

  1. my age is 25

类型推导

如果声明一个变量时提供了初始值,Go可以根据该初始值来自动推导变量的类型。因此如果声明变量时提供了初始值,就可以不必指定其类型。

也就是说,如果声明变量的形式为:var name = initialvalue,Go将根据 initialvalue 自动推导变量 name 的类型。

  1. package main
  2. import "fmt"
  3. func main() {
  4. var age = 25
  5. fmt.Println("my age is", age)
  6. }

输出如下:

  1. my age is 25

多变量声明

  • 1、多个变量可以在一条语句中声明

多变量声明的语法为:var name1, name2 type = initialvalue1, initialvalue2,例如:

  1. package main
  2. import "fmt"
  3. func main() {
  4. var age, height int = 25,160 //declaring multiple variables;
  5. fmt.Println("my age is", age, "\nmy height is",height)
  6. }

如果指定了初始值,则 可以利用类型推导将type 省略。
输出如下:

  1. my age is 25
  2. my height is 160
  • 2、一条语句中声明多个不同类型的变量
  1. package main
  2. import "fmt"
  3. func main() {
  4. var(
  5. name = "qinxi"
  6. age = 26
  7. height int
  8. )
  9. fmt.Println("my age is", age, "\nmy height is",height,"\nmy name is",name)
  10. }

输出如下:

  1. my age is 26
  2. my height is 0
  3. my name is qinxi

速记声明

速记声明使用 := 操作符来声明变量。
速记声明的语法为:name := initialvalue,例如:

  1. package main
  2. import "fmt"
  3. func main() {
  4. name, age := "aike", 23 //name 字段必须双引号,否则无法识别 "undefined: aike"
  5. fmt.Println("his nanme is",name, "\nhis age is",age)
  6. }

输出如下:

  1. his nanme is aike
  2. his age is 23

速记声明要求必须给声明的每一个变量都提供初始值。

  1. package main
  2. import "fmt"
  3. func main() {
  4. name, age := "aike" //age字段不给初始值,会报错“assignment mismatch: 2 variables but 1 values”
  5. fmt.Println("his nanme is",name, "\nhis age is",age)
  6. }

短变量声明

在函数内部,可以使用更简略的:=方式声明并初始化变量。

  1. package main
  2. import (
  3. "fmt"
  4. )
  5. // 全局变量m
  6. var m = 100
  7. func main() {
  8. n := 10
  9. m := 200 // 此处声明局部变量m
  10. fmt.Println(m, n)
  11. }

注意事项:

  1. 函数外的每个语句都必须以关键字开始(var、const、func等)
  2. :=不能使用在函数外。
  3. _多用于占位,表示忽略值。