Go 变量

用户头像
吐核hú
关注
发布于: 2020 年 07 月 05 日

名称

Go中的函数、变量、常量、类型、语句标签和包的名称都必须以字母(Unicode中的字符即可)或者下划线开头,后面可以跟任意数量的字符、数字和下划线,并区分大小写



Go有25个关键字,只能用在语法允许的地方,不能作为名称使用

break default func interface select

case defer go map struct

chan else goto package switch

const fallthrough if range type

continue for import return var



还有三十几个内置的预声明的常量、类型和函数:

常量:true false iota nil

类型:int int8 int16 int32 int64 uint uint8 uint16 uint32 uint64 uintptr float32 float64 complex64 complex128 bool byte rune string error

函数:make len cap new append copy close delete complex real imag panic recover

由于这些名称不是预留的,所以可以对其中的名称进行重声明,但是这会产生冲突的风险



如下代码对new进行了重声明,并且可以正常运行:

package main
import "fmt"
func main() {
old, new := 0, 1 //new 被声明为一个变量
fmt.Print(old, new)
}

变量声明和赋值

声明
var name = expression

类型和表达式部分可以省略一个,但不能都省略

  • 如果省略类型,它的类型将由初始化表达式决定

  • 如果省略表达式,初始化值取对应类型的零值

  • 数字:0

  • 布尔:false

  • 字符串:""

  • 接口及引用类型:nil

  • 数组或结构体等复合类型,零值就是所有元素或成员的零值



可以一次性声明多个变量,忽略类型可以同时声明不同类型的变量

var a, b, c int //int, int, int
var c, d, f = 1, 2.0, false //int, float64, bool
短变量声明

在函数中,一种称为短变量声明的可选形式,可以用来声明和初始化局部变量

name := expression //局部变量的声明和初始化中主要使用短变量声明

var 声明通常是为那些跟初始化表达式类型不一致的局部变量保留的,或者用于后面才会对变量赋值以及变量初始值不重要的情况



i, j := 2, 3 //同var声明一样,多个变量可以同时使用短变量声明和初始化
赋值

最简单的形式是由赋值符=以及符号左边的变量和符号右边的表达式组成

a = 1
x, y = y, x //Go语言允许几个变量被一次性赋值,该语句表示交换 x 和 y 的值

赋值规则:类型必须精准匹配,nil 可以被赋给任何借口变量或引用类型



package main
import "fmt"
var name = "exp"
func main() {
old, new := 0, 1
var a int
{
old := 2
fmt.Println(old) //2
a = 10
}
fmt.Print(old, new, a, name) //0 1 10exp
}

变量的生命周期

  • 包级别变量的生命周期是整个程序的执行时间

  • 局部变量的声明周期从声明一个变量开始到它变得不可访问

变量的作用域

语法块是由大括号围起来的一个语句序列,在语法块中声明的变量对该语法块的外部不可见



用户头像

吐核hú

关注

这也不会,那也不会~ 2019.04.17 加入

高级菜哔工程师

评论

发布
暂无评论
Go变量