在程序设计中,种变编译器必须将代表数据的量声变量名称替换成该数据所在的内存地址。变量的明方名称、类型及内存地址通常会维持固定,式和使用但该内存地址所存储的场景数据在程序执行期间则可能会改变。 Golang 语言编译器需要先明确变量的种变内存边界,才可以使用变量。量声通过声明变量使用的明方类型,编译器可以明确变量的式和使用内存边界。 因为 Golang 语言是场景静态语言,它不能像动态语言那样,种变在运行时可以通过分析变量的量声值,自动确定变量的明方内存边界,所以在 Golang 语言中,式和使用使用变量之前,场景需要先声明变量。 在 Golang 语言中,在变量显式赋值的前提下,声明变量可以省略类型,和使用短变量声明方法时,也不需要指定变量类型,此时,编译器会根据变量的云服务器值通过类型推断得出变量类型,从而明确变量的内存边界。 Golang 语言的变量声明比较灵活,它支持多种变量声明的方式,包括标准声明变量,不显式赋初始值声明变量,省略类型声明变量和短变量声明。 阅读上面这段代码,我们可以发现 Golang 语言的标准声明变量方式包含 4 部分,分别是 var 关键字,变量名 a,变量类型 int 和变量的值 100。 如果我们不想给声明的变量赋初始值,也可以不显式给变量赋值,省略等号和值,如下所示: 如果不显式给变量赋值,变量的值是类型的零值,即类型的默认值。 标准声明变量方式的 4 部分,除了可以不显式给变量赋值,还可以省略类型,亿华云计算如下所示: 我们在文章开头介绍编译器需要根据变量的类型确定变量的内存边界,如果在声明变量时,未指定变量的类型,编译器还可以确定变量的内存边界吗? 答案是可以。原因是 Golang 编译器可以根据变量的赋值通过类型推断得到变量的类型。 细心的读者可能会问,Golang 语言可以将标准变量声明方式的 4 部分中类型和显式赋初始值同时省略吗? 答案是不可以。Golang 编译器必须至少明确变量的类型或初始值,二者如果都省略,编译器将无法得到变量的类型,从而也就不能根据类型明确变量的内存边界。 以上两种在标准声明变量方式的基础上简化的变量声明方式,都需要使用关键字 var,可能会有读者问可以省略关键字 var 吗? 答案是可以。Golang 语言还有一种最简化的声明变量的源码库方式,短变量声明,使用短变量声明的方式,可以同时省略关键字 var 和变量的类型。 阅读上面这段代码,它就是短变量声明,与标准变量声明的方式相比,该方式省略了关键字 var 和变量的类型。但是,细心的读者可能已经发现,= 改为 :=。Golang 编译器可以根据变量的赋值做类型推断,得到变量的类型,从而明确变量的内存边界。 短变量声明的方式虽然是 Golang 语言中最简化的变量声明的方式,但是它也有局限性,它只能用于局部变量声明。 无论是省略类型显式赋初始值声明变量,还是短变量声明,它们都是 Golang 编译器根据变量的赋值,通过类型推断得出变量的默认类型。 如果我们也不想使用变量的默认类型,那么我们可以通过显式类型转换得到我们想要的变量类型,如下所示: var a = int8(100) 所有声明变量的方式,都支持变量列表声明。所谓变量列表声明,就是使用 var 关键字,通过一行代码声明多个变量。 var a, b, c int = 100, 200, 300 var d, e, f int var g, h, i = 400, "你好", true Golang 语言还支持变量声明块,使用关键字 var 将多个单个变量声明或变量列表声明放在一起,如下所示: var ( a int = 100 b int = 200 ) var ( c = 300 d = 3.14 f = true ) var ( e, f, g int = 10, 20, 30 h, i, j string = "a", "b", "c" 我们介绍了多种变量声明的方式,那么每种 Golang 语言变量声明方式的使用场景分别是什么,首先,我们需要先了解 Golang 语言中变量的作用域,分别是包级变量,全局变量和局部变量。 包级变量的作用域是只能在同一个 package 中使用。 包级变量,只能使用 var 关键字的变量声明方式,如果变量声明显式初始化,一般会使用省略类型声明变量的方式。 全局变量的作用域是在项目的任意位置都可以使用。 如果包级变量的变量名首字母大写,也就是 Golang 语言中的导出变量,那么这个变量就成为全局变量,可以在全局使用。 全局变量,也只能使用 var 关键字的变量声明方式,如果变量声明显式初始化,一般会使用省略类型声明变量的方式。 局部变量的作用域是只能在函数体或方法体中使用。 局部变量,一般会优先使用短变量声明的方式,除非不想给局部变量显式初始化,我们可以使用省略类型声明变量的方式。 本文我们介绍 Golang 语言为什么在使用变量之前,需要先声明变量;Golang 语言有哪些变量声明的方式和 Golang 语言的每种变量声明方式适用于什么场景。01介绍
02变量声明方式
标准声明变量
var a int = 100不显式赋初始值声明变量
省略类型声明变量
短变量声明
显式类型转换
变量列表声明
变量声明块
03使用场景
包级变量
全局变量
局部变量
04总结