1. 程式人生 > >2、Go的型別和變數

2、Go的型別和變數

既然匯入多個包可以簡寫,那麼宣告多個常量、全域性變數或一般型別(非介面、非結構)是否也可以用同樣的方式簡寫呢?

// 常量定義
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/0

255
位元組型: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)