資料類型
先來介紹一下Golang的資料類型。
布爾型
bool
類型代表邏輯值,有真值
true
和假值
false
兩種取值。
整數類型
整數類型有如下幾種,這些整數都是有符号的類型,它們的無符号版本是類型名前面添加
u
,例如
uint32
。
類型 | 長度 |
---|---|
int8 | 1位元組 |
int16 | 2位元組 |
int32 | 4位元組 |
int64 | 8位元組 |
除此以外,還有比較特殊的幾種類型。
備注 | ||
---|---|---|
byte | 是int8的别名 | |
int | 和系統有關 | 有符号整數 |
uint | 無符号整數 | |
uintptr | 指針類型 | |
rune | 是int32的别名,代表Unicode代碼點 |
浮點數類型
有兩種浮點數,單精度
float32
和雙精度
float64
,類似于Java語言中的
float
和
double
複數類型
Golang支援複數類型,有
complex64
complex128
兩種精度不同的複數類型。
字元串類型
字元串類型是
string
類型預設值
對于布爾類型,預設值是
false
;對于整數類型,預設值是0;對于字元串類型,預設值是空值字元串
""
變量和常量
變量聲明
Golang比較特殊的一點就是類型後置了。如果學習過C系的語言,我們會習慣
int a
這樣的
類型 變量名
方式。不過這種方式在複雜的類型組合下不太直覺,是以Golang采用了後置的類型聲明方式。如果聲明的時候不指定初始化值,就會使用對應類型的預設值。
//類型在變量名後面
var i int
如果一行聲明多個變量且類型相同,可以隻在最後一個變量上添加類型。
var x, y int
//聲明的同時指派
var a, b int = 3, 4
如果要聲明的是局部變量(在函數内部的變量),可以使用另一種方式
:=
,省略
var
關鍵字。這時候必須在聲明的時候同時給定初始值,變量類型則由初始值的類型推斷。
func hey() {
k := 5
fmt.Printf("k=%d", k)
}
如果變量聲明在函數外面,那麼它就是一個全局變量。
類型轉換
Golang不支援隐式類型轉換,所有類型都需要顯式轉換。轉換使用
類型名(變量名)
的方式。
var count int = int(32.0)
常量聲明
聲明常量使用
const
關鍵字,常量無法使用
:=
方式聲明。
const Pi = 3.1415926