go是一種靜態語言,變數的型別是在編譯階段確定的。
變數必須先定義後使用
變數必須要有型別
變數型別定下來後不能改變
1、變數
1.1、定義變數的方式
// 第一种
var age int (string bool 等)
age = 10
// 第二种
var age = 10
// 第三种
age := 10
1.2、全域性變數和區域性變數
全域性變數:在函式外部定義的變數,作用域為整個包
區域性變數:在函式內部定義的變數,作用域為函式內部
注:全域性變數定義之後可以不使用,但是區域性變數定義之後必須要使用
1.3、多變數定義
// 第一种
var user1, user2, user3 string
// 第二种
var user1, user2, user3 = "user1", 1, true
// 第三种
var (
user1 string
user2 int
user3 bool
)
1.4、注意事項
1、變數必須事先定義 2、公式靜態語言,要求變數型別和賦值型別一致 3、變數名不能衝突 4、簡介變數定義不能作為全域性變數(age := 1) 5、變數有零值,也就是預設值
var age int //age默认为0
var name string //name默认为""
var isOk bool //isOk默认为false
6、全域性變數定義之後可以不使用,但是區域性變數定義之後必須要使用,否則會報錯
2、常量
常量,是在定義的時候就指定的值,不能修改
在go語言中,常量定義的時候儘量全部大寫,便於區分
2.1、定義常量的方式
// 第一种
const PI float32 = 3.1415926 //显示定义
const PI = 3.1415926 //隐式定义
// 之后PI不能改变
PI = 3.1415926 //报错
2.2、多變數定義
變數在成組進行定義是也有多種方式
const(
PI float32 = 3.1415926
PI2 = 'a'
PI3 = 3
)
特別的:
cosnt(
x int = 1p
y
s = 'a'
z
m
)

2.3、注意事項
1、常量型別只能是bool、數值和字串 2、常量沒有強制使用的要求,定義之後可以選擇不使用 3、顯示指定型別的時候,必須保證常量左右值型別一致
3、iota
一種能夠被編譯器修改的特殊常量
3.1、iota的使用
//写法1
const (
ERR0 = iota
ERR1 = iota
ERR2 = iota
ERR3 = iota
ERR4 = iota
)
// 输出为:0、1、2、3、4
//写法2
const (
ERR0 = iota
ERR1
ERR2
ERR3
ERR4
)
// 输出也为0、1、2、3、4
有關iota的計數器特性,如下圖


iota內部有同一個計數器,自己遞增,不受賦值的影響
出現新的const時,iota會歸零
3.2、注意事項
1、如果中斷了iota必須顯示恢復,後續會自動遞增 2、iota預設型別是int型 3、iota能簡化const型別的定義 4、每次出現新的const之後iota會歸0
4、匿名變數
用下劃線進行標識,不使用不會報錯
如:var _ int = 10
在go語言中,匿名變數是指沒有名字的變數。匿名變數在函式中經常被用作佔位符,用於接收函式返回的多個值中的一部分。 下面是一個應用場景的舉例:
5、變數的作用域
5.1、全域性變數
在函式外部定義的變數,作用域為整個包。
5.2、區域性變數
在函式內部定義的變數,作用域為函式內部。
有嚴格限制,在使用的時候需要注意。
