Golang - 变量

变量说明

变量是程序的基本组成单位,无论使用哪种高级程序语言编写程序,变量都是其程序的基本组成单位。

变量的概念

变量相当于内存中一个数据存储空间的表示,有自己的名称(变量名)和类型(数据类型

你可以把变量看做是一个房间的门牌号,通过门牌号我们可以找到房间,同样的道理,通过变量名可以访问到变量

变量的使用步骤

  1. 申明变量
  2. 变量赋值
  3. 使用变量

变量的基本使用步骤如下:

package main

import (
	"fmt"
)

func main() {
	var name string //申明变量

	name = "smile" //变量赋值

	fmt.Println(name) //使用变量
}

变量的注意事项

变量声明后,必须使用,否则程序报错:imported and not used: "fmt"

变量声明后,不能重复声明,否则程序报错:age redeclared in this block

变量名注意事项

  • 由26个英文字母大小写,0-9,_组成
  • 不能以数字开头
  • Golang中严格区大小写
  • 标识符不能包含空格
  • 下划线“_”本身在Golang中是一个特殊的标识符,称为空标识符。可以表示任何其他的标识符,但是对它的值会被忽略(比如:返回某个值)。所以仅能被作为占位符使用,不能作为标识符使用

声明单一变量

声明一个变量的语法:var name type 例如

package main

import "fmt"

func main() {
	var name string //变量声明

	fmt.Println(name)
}

语句 var name string 声明了一个类型为string,名称为name的变量,如果一个变量没有被赋予任何值,Go会自动将这个变量初始化其类型的0值。

类型 零值
bool false
string ""
int 0
float 0.0
map nil
slice nil
array 长度为 lenth 每个元素的零值为 type 对应的零值

一个变量可以被赋予其任何类型的任何值。

package main

import "fmt"

func main() {
	var name string //变量声明

	name = "smile" //变量赋值

	fmt.Println(name)

	name = "易文杰" //变量赋值

	fmt.Println(name)
}

声明一个带初始值的变量

在申明变量的时可以指定其初始值

申明一个带初始值的变量的语法为:var name type = initalvalue

package main

import "fmt"

func main() {
	var name string = "smile"
	
	fmt.Println(name)
}

在上面程序中,name是一个string类型的变量,初始值为smile。运行上面的程序,输出如下,可以看到name的初始值确实为smile

smile

类型推导

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

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

在下面的例子中,你可以看到申明变量name时,并没有指定其类型。因为name的初始值为smile,Go会自动推导出其类型为string

package main

import "fmt"

func main() {
	var name = "smile"

	fmt.Println(name)
}

多变量申明

多个变量可以在一条语句中申明。

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

package main

import "fmt"

func main() {
	var name,sex string  = "smile","男"

	fmt.Println(name,sex)
}

如果指定了初始值,则type可以省略。下面的程序利用类型推导声明了多个变量:

package main

import "fmt"

func main() {
	var name,sex = "smile","男"

	fmt.Println(name,sex)
}

当不指定初始值,它们会自动赋值。

package main

import "fmt"

func main() {
	var name,sex string

	fmt.Printf("姓名是%v\n性别是%v",name,sex)
}

将会输出

姓名是
性别是

有些时候我们需要在一条语句中申明多个不同类型的变量,我们可以使用下面的语法达到此目的:

var name,age = "smile",18

var (
	name = "smile"
	age  = 18
)

速记声明

Go 提供了另一种简洁的声明变量的方式,这种方式称为速记声明(shorthand declaration)。速记声明使用:=操作符来申明变量

速记声明的语法为:name := initialvalue,例如:

package main

import (
	"fmt"
)

func main() {
	name,sex := "smile","男"

	fmt.Println(name,sex)
}

上面的程序,输出如下:

smile 男

速记声明要求在 :=的左边必须至少有一个变量时新声明的,否则程序报错:

no new variables on left side of :=

一个变量不能被赋予与其类型不同的值。下面的程序将报错:

annot use 12 (type untyped int) as type string in assignment。这是因为name被申明为string类型,但是试图将int类型的值赋予给它

package main

import (
	"fmt"
)

func main() {
	name,sex := "smile","男"

	name = 12

	fmt.Println(name,sex)
}
posted @ 2021-12-07 15:49  易文杰  阅读(224)  评论(0编辑  收藏  举报