Go程式設計基礎03-型別與變數
阿新 • • 發佈:2018-12-17
Go基本型別
型別 | 長度 | 取值範圍 | 注意事項 | 零值(即預設值) |
---|---|---|---|---|
布林型bool | 1位元組 | true/false | 不能使用數字代替 | false |
整型int/uint | 根據執行平臺可能為32位或64位 | 0 | ||
8位整型int8/uint8 | 1位元組 | -128-127/0-255 | 0 | |
位元組型byte(uint8別名) | 用法等同於無符號的8位整型 | 0 | ||
16位整型int16/uint16 | 2位元組 | -32768-32767/0-65535 | 0 | |
32位整型int32(rune別名)/uint32 | 4位元組 | rune常用於Unicode,用法等同於有符號的32位整型 | 0 | |
64位整型int64/uint64 | 8位元組 | 0 | ||
浮點型float32/float64 | 4/8位元組 | 小數位精確到7/15位小數位 | 0 | |
複數complex64/complex128 | 8/16位元組 | 0 | ||
足夠儲存指標的32位或64位整數型uintptr | 0 |
範例:驗證基本型別零值和最大最小值
package main
import (
"fmt"
"math"
)
func main() {
var a int
fmt.Println(a) // 0
var b float32
fmt.Println(b) // 0
var c bool
fmt.Println(c) // false
var d byte
fmt. Println(d) //0
// go中的math包可以取得基本型別的最大值和最小值
fmt.Println(math.MaxFloat32)
}
變數
單個變數的宣告與賦值
宣告格式:var 變數名 變數型別
賦值格式:變數名 = 表示式
宣告的同時賦值:var 變數名 變數型別 = 表示式
package main
import (
"fmt"
)
func main() {
// 先聲明後賦值多用於全域性變數宣告
var a int // 宣告變數
a = 11 // 變數賦值
fmt.Println(a)
// 宣告的同時並賦值
var b int = 12
fmt. Println(b)
// 宣告時省略型別,由系統推斷
var c = false
fmt.Println(c)
// 簡短宣告,僅用於區域性變數
d := 18.9
fmt.Println(d)
}
多個變數的宣告與賦值
- 全域性變數宣告可使用
var()
的方式簡寫 - 全域性變數的宣告不能省略
var
,但可以使用並行方式 - 所有變數都能省略型別,由系統推斷
- 區域性變數不能使用
var()
的方式簡寫,只能使用並行方式
package main
import (
"fmt"
)
var (
// 常規方式
aa = 123
// 並行宣告
bb, cc = 56, false
)
func main() {
// 多個變數宣告
var a, b int
// 多個變數賦值
a, b = 11, 13
fmt.Println(a + b)
// 多個變數宣告的同時賦值
var c, d int = 6, 7
fmt.Println(c + d)
// 多個變數宣告時省略型別
var e, f = 8, 1
fmt.Println(e + f)
// 多個變數簡短宣告
g, h := 11, 15
fmt.Println(g + h)
}
變數的型別轉換
- Go中不存在隱式轉換(即自動轉換),所有型別轉換必須顯式宣告(即強制轉換)
- 轉換隻能發生在兩種互相相容的型別之間
- 型別轉換格式:
valueA [:]= TypeofValueA (valueB)
package main
import (
"fmt"
)
func main() {
// 整數型與浮點型相容,可以進行型別轉換
var a float32 = 100.1
fmt.Println(a) // 100.1
b := int(a)
fmt.Println(b) // 100
}