变量
Golang 有四种声明
|
|
1. 基础内容
1.1. 变量的基本用法
|
|
表达式省略时,将初始化零值
|
|
Go开发者应该让聚合类型的零值也具有意义,可以保证任何类型变量总有合理有效的零值状态。
1.2. 多参数声明
|
|
- 在包级别声明的变量会在 main 入口函数之前完成初始化
- 局部变量将在声明语句被执行到的时候完成初始化
1.3. 简短声明变量
此方式广泛用于局部变量声明和初始化。
那么什么时候用 var ,什么时候使用简短声明? 建议
- 初始化零值时,用 var。因为通常
var
比:=
更醒目,更易辨认声明变量。 - 非零值,使用
:=
|
|
注意
-
包级别变量 与 局域变量的区分,包级别定义的变量,在函数内使用
:=
时,会在函数内声明新变量 -
区分
:=
「声明语句」 与=
「赋值语句」-
当
:=
左侧的变量已经存在时 , 编译报错 , 有多个返回值且某一个变量存在 , 则赋值存在变量,创建新变量1 2 3
var k int k,err := function() // k 已经存在, 此处赋值给 k 并创建 err 变量 k := 10 // 编译器报错,至少需要一个声明的新变量才能使用 :=
-
1.4. 强制类型转换
类型转换会产生一个新的内存成本,但是我们宁可安全也不后悔。
可以使用 unsafe 包来做一些转换,但是如果有一个字节的偏差就会遇到真正的问题。
|
|
1.5. int 类型在不同架构下
在 amd64 架构下,表示 64 位,8 字节(byte)
在 amd32 架构下,表示 32 位,4 字节(byte)