go語言變數的宣告與賦值
變數的宣告
標準格式
var 變數名 變數型別
批量格式
var (
a int
b string
c []float32
d func() bool
e struct {
x int
}
)
var a int
var b string
var c []float32
var d func() bool
var e struct{
x int
}
Go語言變數的初始化
預設值:
整型和浮點型變數的預設值為 0。
字串變數的預設值為空字串。
布林型變數預設為 bool。
切片、函式、指標變數的預設為 nil。
變數初始化的標準格式
var 變數名 型別 = 表示式
var hp int = 100
上面程式碼中,100 和 int 同為 int 型別,int 可以認為是冗餘資訊,因此可以進一步簡化初始化的寫法。
編譯器推導型別的格式
在標準格式的基礎上,將 int 省略後,編譯器會嘗試根據等號右邊的表示式推導 hp 變數的型別。
var hp = 100
var defence = 20
var damageRate float32 = 0.17
var damage = float32(attack-defence) * damageRate
fmt.Println(damage)
第 4 行,將 attack 和 defence 相減後的數值結果依然為整型,使用 float32() 將結果轉換為 float32 型別,再與 float32 型別的 damageRate 相乘後,damage 型別也是 float32 型別。
提示:damage 變數的右值是一個複雜的表示式,整個過程既有 attack 和 defence 的運算還有強制型別轉換。
短變數宣告並初始化
var 的變數宣告還有一種更為精簡的寫法,例如:
hp := 100
注意:由於使用了:=,而不是賦值的=,因此推導宣告寫法的左值變數必須是沒有定義過的變數。若定義過,將會發生編譯錯誤。
Go語言多個變數同時賦值
變數交換
var b int = 200
b, a = a, b
fmt.Println(a, b)```
### Go語言匿名變數
在使用多重賦值時,如果不需要在左值中接收變數,可以使用匿名變數
```func GetData() (int, int) {
return 100, 200
}
a, _ := GetData()
_, b := GetData()
fmt.Println(a, b)```
程式碼執行結果:
100 200
**注意:**匿名變數不佔用名稱空間,不會分配記憶體。匿名變數與匿名變數之間也不會因為多次宣告而無法使用。
相關文章
- go語言 變數的宣告與使用Go變數
- Go:變數宣告的多種方法與預設值Go變數
- Kotlin 變數詳解:宣告、賦值與最佳實踐指南Kotlin變數賦值
- go語言變數Go變數
- JavaScript 同時宣告多個變數並賦值JavaScript變數賦值
- golang 快速入門 [8.1]-變數型別、宣告賦值、作用域宣告週期與變數記憶體分配Golang變數型別賦值記憶體
- 【譯】Go語言宣告語法Go
- GO語言————4.4 變數Go變數
- shell變數命名與賦值變數賦值
- ES6 變數宣告與賦值:值傳遞、淺拷貝與深拷貝詳解變數賦值
- 鴻蒙開發TypeScript語言:【變數宣告】鴻蒙TypeScript變數
- 初學Go語言 變數Go變數
- GO語言————6.2 函式引數與返回值Go函式
- 變數的賦值 指標間接賦值變數賦值指標
- Go語言學習(3) - 變數與初始化Go變數
- Go 語言入門教程:變數Go變數
- Go語言變數生命期和變數逃逸分析Go變數
- php之普通變數賦值、物件賦值、引用賦值的區別PHP變數賦值物件
- 變數的解構賦值變數賦值
- c語言的定義與宣告C語言
- GO語言—————7.1 宣告和初始化Go
- 關於變數與‘=’賦值的情況出錯變數賦值
- 第四節 go 語言變數定義Go變數
- GO語言————6.3 傳遞變長引數Go
- GO語言變數作用域-坑記錄Go變數
- 簡單介紹Lua中的變數與賦值方法變數賦值
- Go Quiz: 從Go面試題看變數的零值和初始化賦值的注意事項GoUI面試題變數賦值
- go語言與c語言的相互呼叫GoC語言
- shell 變數賦值問題變數賦值
- Go語言中切片slice的宣告與使用Go
- GO語言基礎(結構+語法+型別+變數)Go型別變數
- MySQL中變數的定義和變數的賦值使用MySql變數賦值
- Go 語言的詞法分析和語法分析(2)—Import宣告的解析Go詞法分析語法分析Import
- 程式語言語法:`=`表示賦值,`:`表示型別。賦值型別
- GO語言————8.1 MAP宣告、初始化和makeGo
- 肯定賦值斷言與非空斷言賦值
- var與let宣告變數的區別變數
- vue 變數賦值同時改變的問題Vue變數賦值