类型推导是将变量的类型省略,根据等号右边的值来自动推导变量的类型并完成初始化。 有时候我们会,这个时候编译器会根据等号右边的值来推导变量的类型完成初始化。
var name = "pprof.cn"
var sex = 1
程序运行过程中的数据都是保存在内存中,我们想要在代码中操作某个数据时就需要去内存上找到这个变量,但是如果我们直接在代码中通过内存地址去操作变量的话,代码的可读性会非常差而且还容易出错,所以我们就利用变量将这个数据的内存地址保存起来,以后直接通过这个变量就能找到内存上对应的数据了。
变量(Variable)的功能是存储数据。常见变量的数据类型有:整型、浮点型、布尔型等。
Go语言中的每一个变量都有自己的类型,并且变量必须经过声明后才能使用。
Go语言的变量声明格式为:
var 变量名 变量类型
变量的声明以关键字var开头,变量类型放在变量的后面,行尾不需要分号:
var name string
var age int
var isBool bool
每声明一个变量就需要写var关键字会比较繁琐,go语言中支持批量变量的声明:
var (
a string
b int
c bool
d float32
)
Go语言在声明变量的时候,会自动对变量对应的内存区域进行初始化操作。每个变量会被初始化成其类型的默认值,例如: 整型和浮点型变量的默认值为0, 字符串变量的默认值为空字符串,布尔型变量默认为false, 切片、函数、指针变量的默认为nil。
当然我们也可在声明变量的时候为其指定初始值。变量初始化的标准格式如下:
var 变量名 类型 = 表达式
栗子 :
var varName string = "welcome to golang. "
有时候我们会将变量的类型省略,这个时候编译器会根据等号右边的值来推导变量的类型完成初始化。
var name = "James"
var sex = 35
我们也可以一次性初始化多个变量:
var name, sex = "James", 35
在函数内部,可以使用更简略的 “ := ” 方式声明并初始化变量。
package main
import (
"fmt"
)
// 全局变量m
var m = 100
func main() {
// 使用 := 声明变量n和m
n := 10
// 此处声明局部变量m
m := 200
fmt.Println(m, n)
}
var(
size := 1024
max_size = size*2
)
func main() {
fmt.Println(size,max_size)
}
上面栗子是不能通过编译,因为短变量声明是有着限制:
1.必须使用显示初始化;
2.不能提供数据类型,编译器会自动推导;
3.只能在函数内部使用简短模式;
在使用多重赋值时,如果想要忽略某个值,可以使用匿名变量(anonymous variable)。 匿名变量用一个下划线 _ 表示,例如:
func foo() (int, string) {
return 10, "Q1mi"
}
func main() {
x, _ := foo()
_, y := foo()
fmt.Println("x=", x)
fmt.Println("y=", y)
}
匿名变量不占用命名空间,不会分配内存,所以匿名变量之间不存在重复声明。 (在Lua编程语言里,匿名变量也被叫做哑元变量。)
函数外的每个语句都必须以关键字开始(var、const、func等);
:= 不能使用在函数外;
_ 多用于占位,表示忽略值;