2、Go的型別和變數
阿新 • • 發佈:2018-12-01
既然匯入多個包可以簡寫,那麼宣告多個常量、全域性變數或一般型別(非介面、非結構)是否也可以用同樣的方式簡寫呢?
// 常量定義
const (
PI = 3.14
const1 = "1"
const2 = 2
)
// 一般型別宣告
type (
newType int
type1 float32
type2 string
type3 byte
)
// 全域性變數的宣告與賦值
var (
name = "goer"
name1 = "1"
)
注意宣告在函式體內的變數(不是全域性變量了)不能用這種簡寫方式
Go基本型別
布林型:bool
長度:1位元組
取值範圍:true、false
注意事項:不可以用數字代表true或false
整型:int/uint
根據執行平臺可能是32或64
8位整型:int8/uint8
長度:1位元組
取值範圍:-128127/0255
位元組型:byte(uint8別名)
16位整型:int16/uint16
長度:2位元組
取值範圍:-3276832768/065535
32位整型:int32(rune)/uint32
長度:4位元組
64位整型:int64/uint64
長度:8位元組
浮點型:float32/float64
長度:4/8位元組
小數位:精確到7/15位小數位
複數:complex64/complex128
長度:8/16位元組
足夠儲存指標的32位或64位整數型:uintptr
其他值型別:array、struct、string
引用型別:slice、map、chan
介面型別:interface
函式型別:func
型別零值
零值並不等於空值,而是當變數被宣告為某種型別後的預設值,通常情況下預設值為0,bool為false,string為空字串。
##類型別名
type (
byte int8
rune int32
文字 string
)
此處只是演示,不建議這樣搞哈
單個變數的宣告與賦值
var a int // 變數的宣告
a = 123 // 變數的賦值
// 變數宣告的同時賦值
var b int = 111
// 也可以省略型別由系統判斷
var c = 222
// 變數的宣告與賦值
// 簡寫方式
d := 444
多個變數的宣告與賦值
全域性變數的宣告可使用var()
所有變數都可以使用型別推斷。
區域性變數不可以使用
var()
的方式簡寫,只能使用並行方式。
var (
aaa = "hello"
a,b = 1,2 // 並行的方式
)
// 多個變數的宣告
var a, b, c int
// 多個變數的賦值
a, b, c = 1, 2, 3
// 多個變數宣告同時賦值
var aa, bb int = 11, 22
// 簡寫方式
m, n := 77, 88
變數的型別轉換
Go中不存在隱式轉換,所有型別轉換必須顯式宣告。
轉換隻能發生在兩種相互相容的型別之間。
var f float = 100.1
// 把flaot型別轉為int型
b := int(f)