GoLang

版本:1.18.3

Go 语言变量名由字母、数字、下划线组成,其中首个字符不能为数字。严格区分大小写。

Go语言规范变量名、常量名、函数名首字母大写可被其他包导入访问,首字母小写只能在本包内使用。


变量声明

1. Go 语言使用 var 关键字声明变量,变量的数据类型在变量名称后声明。

例:声明变量 i ,其数据类型是 int (int 默认值是 0),初始化变量值为 20。

var i int = 20


2. 可以不声明变量类型,根据变量值推导变量类型

var n = 10

Go 语言中整数数值型变量的默认类型是 int,此时赋值给其他类型会出错

// cannot use "300" (untyped string constant) as int value in assignment
n = "300" 


3. 同时声明多个变量

例:同时声明 int 类型变量 x,y,z

var x, y, z int


4. 声明多个不同数据类型变量,需要初始化赋值自动推导类型

var id, name, age = 1, "golang", 17

int变量 id = 1,字符串变量 name = "golang", int变量 age = 17


5. Go 语言也不使用 var 关键字,可以通过 := 声明初始化变量,但不能显示声明变量类型,由 Go 自动推导。

例子:声明变量 num,赋值 20

// 相当于 var num int = 20
num := 20

说明:

①. 只能在函数体内使用,即只能声明初始化局部变量。

②. 也可以同时声明初始化多个变量,类似于使用 var 关键字。


6. 使用 var 关键字声明全局变量

// 声明全局变量
var globalVar1 int = 10
var globalVar2 int = 20
var (
	globalVar3 int = 30
	globalVar4 int = 40
)


打印变量的数据类型

fmt.Printf("%T", num)

打印变量的内存地址

fmt.Printf("%p", &num)

打印变量的字节大小

fmt.Printf("%d", unsafe.Sizeof(num))


变量的作用域

Go 语言的变量作用域有:

局部变量:

1. 在函数体内声明的变量称之为局部变量,形参和返回值也都属于局部变量,其作用范围是在函数体内。

2. 局部变量的声明周期是从函数被调用执行到函数执行完毕被销毁。

3. 在同一个作用域内变量名称不能相同。

4. 在函数内局部变量可以全局变量重名,在该函数内只能访问局部变量。

全局变量:

1. 在函数体外声明的变量被称为全局变量。

2. 全局变量必须使用 var 关键字声明,不能通过 “:=” 初始化代替变量的声明。


Go 语言变量的 值类型 和 引用类型

值类型

对于基础数据类型的变量都是直接指向内存中的值,通过变量给其他变量赋值时,自动对变量值进行了拷贝,所以指向的值相同,但内存地址是不同的。

值类型的数据类型: 整数类型、浮点数类型、布尔值、字符串、数组和结构体。

值类型都有对应的指针类型,格式为 *数据类型。


引用类型

对于其他数据类型一般使用引用类型,变量指向的是值得引用地址,赋值时也是拷贝出一份新的引用地址,由于引用地址相同所以指向的值是同一个。



转载请指明出处!http://www.miselehe.com/article/view/253