Go語言中給我們提供的所有基本數(shù)據(jù)類型,我們應(yīng)該理解如何在自己的Go程序中使用這些類型。
數(shù)據(jù)類型
Go語言將數(shù)據(jù)類型分為四類:Basic Types(基礎(chǔ)類型)、Aggregate Types (復(fù)合類型)、Reference Types (引用類型)、Interface Types (接口類型)。
基礎(chǔ)類型包括:數(shù)字、字符串和布爾型。布爾型的值只可以是常量 true 或者 false。數(shù)字類型支持整型和浮點型,并且支持復(fù)數(shù),其中位的運算采用補碼。
復(fù)合數(shù)據(jù)類型包括:數(shù)組、結(jié)構(gòu)體是通過組合簡單類型,來表達更加復(fù)雜的數(shù)據(jù)結(jié)構(gòu)。
引用類型包括:指針、slice、map、 channel、接口和函數(shù)類型。當聲明引用類型的變量時,創(chuàng)建的變量被稱作標頭(header)值。從技術(shù)細節(jié)上說,字符串也是一種引用類型。每個引用類型創(chuàng)建的標頭值是包含一個指向底層數(shù)據(jù)結(jié)構(gòu)的指針。每個引用類型還包含一組獨特的字段,用于管理底層數(shù)據(jù)結(jié)構(gòu)。因為標頭值是為復(fù)制而設(shè)計的,所以永遠不需要共享一個引用類型的值。標頭值里包含一個指針,因此通過復(fù)制來傳遞一個引用類型的值的副本,本質(zhì)上就是在共享底層數(shù)據(jù)結(jié)構(gòu)。
integers
我們可以在程序中使用有符號或無符號整數(shù),并可以指定所需的整數(shù)大小。我們?yōu)槭裁匆付赡芤蟮拇笮。冒桑胂笠幌履趪L試優(yōu)化程序的內(nèi)存利用率。如果您知道某個數(shù)字不會超過某個特定值,則可以選擇一個適合該值的尺寸:
我們可以通過鍵入 uint 或 int 在末尾附加int的大小來創(chuàng)建新的整數(shù)變量。如果我們想要一個8位無符號整數(shù),那么它將看起來像 var myint uint8 這樣:
應(yīng)該注意的是,如果您嘗試為一個int分配一個比它可以處理的更大的值,即:
var myint int8
myint = 2500
Go編譯器將無法運行或構(gòu)建程序,并且將輸出2500溢出的事實 int8 。但是,如果要在運行時溢出整數(shù),則可能會開始看到奇怪的結(jié)果。例如,嘗試運行此程序并檢查輸出:
類型轉(zhuǎn)換
當涉及使用具有不同數(shù)據(jù)類型的多個變量時,您通常會不得不將各種整數(shù)變量轉(zhuǎn)換為 int 。這將處理從 uint8 和 int16 到標準32或64位有符號int的轉(zhuǎn)換,從那里您將能夠執(zhí)行加法,乘法和減法。
浮點數(shù)字
它們有2個不同的大小,或者為 float32 , float64 并且使您可以處理標準 int64 數(shù)據(jù)類型中無法容納的大量數(shù)據(jù)。浮點數(shù)的范圍極限值可以在math包找到。常量 math.MaxFloat32 表示 float32 能表示的最大數(shù)值,大約是 3.4e38 ;對應(yīng)的 math.MaxFloat64 常量大約是 1.8e308 。它們分別能表示的最小值近似為 1.4e-45 和 4.9e-324 。
float32 IEEE-754 32位浮點型數(shù)
float64 IEEE-754 64位浮點型數(shù)
float 轉(zhuǎn)換為 int
如果要將整數(shù)轉(zhuǎn)換為浮點數(shù)或?qū)⒏↑c數(shù)轉(zhuǎn)換為int,則可以通過將變量轉(zhuǎn)換為所需的數(shù)據(jù)類型來實現(xiàn)。
復(fù)數(shù)
還有另一種通常被忽略的數(shù)字數(shù)據(jù)類型,即復(fù)數(shù)數(shù)據(jù)類型。這些與浮點數(shù)據(jù)類型非常相似,有兩種不同的大小,您可以選擇 complex64 或 complex128 。
complex64 32 位實數(shù)和虛數(shù)
complex128 64 位實數(shù)和虛數(shù)
布爾
讓我們看看如何在我們的Go程序之一中使用它:
var amazing bool
amazing = true
if amazing {
subscribeToChannel()
}
如果我們想在程序中做一些布爾邏輯會怎樣?好了,使用 || 和 && 運算符,我們可以:
字符串
常量
常量是Go語言中我們最終的基本數(shù)據(jù)類型。它們使我們可以指定在程序執(zhí)行過程中不會改變的不可變值。
const meaningOfLife = 42