Go語言中給我們提供的所有基本數據類型,我們應該理解如何在自己的Go程序中使用這些類型。
數據類型
Go語言將數據類型分為四類:Basic Types(基礎類型)、Aggregate Types (復合類型)、Reference Types (引用類型)、Interface Types (接口類型)。
基礎類型包括:數字、字符串和布爾型。布爾型的值只可以是常量 true 或者 false。數字類型支持整型和浮點型,并且支持復數,其中位的運算采用補碼。
復合數據類型包括:數組、結構體是通過組合簡單類型,來表達更加復雜的數據結構。
引用類型包括:指針、slice、map、 channel、接口和函數類型。當聲明引用類型的變量時,創建的變量被稱作標頭(header)值。從技術細節上說,字符串也是一種引用類型。每個引用類型創建的標頭值是包含一個指向底層數據結構的指針。每個引用類型還包含一組獨特的字段,用于管理底層數據結構。因為標頭值是為復制而設計的,所以永遠不需要共享一個引用類型的值。標頭值里包含一個指針,因此通過復制來傳遞一個引用類型的值的副本,本質上就是在共享底層數據結構。
integers
我們可以在程序中使用有符號或無符號整數,并可以指定所需的整數大小。我們為什么要指定您可能要求的大小,好吧,想象一下您正在嘗試優化程序的內存利用率。如果您知道某個數字不會超過某個特定值,則可以選擇一個適合該值的尺寸:
我們可以通過鍵入 uint 或 int 在末尾附加int的大小來創建新的整數變量。如果我們想要一個8位無符號整數,那么它將看起來像 var myint uint8 這樣:

應該注意的是,如果您嘗試為一個int分配一個比它可以處理的更大的值,即:
var myint int8
myint = 2500
Go編譯器將無法運行或構建程序,并且將輸出2500溢出的事實 int8 。但是,如果要在運行時溢出整數,則可能會開始看到奇怪的結果。例如,嘗試運行此程序并檢查輸出:

類型轉換
當涉及使用具有不同數據類型的多個變量時,您通常會不得不將各種整數變量轉換為 int 。這將處理從 uint8 和 int16 到標準32或64位有符號int的轉換,從那里您將能夠執行加法,乘法和減法。

浮點數字
它們有2個不同的大小,或者為 float32 , float64 并且使您可以處理標準 int64 數據類型中無法容納的大量數據。浮點數的范圍極限值可以在math包找到。常量 math.MaxFloat32 表示 float32 能表示的最大數值,大約是 3.4e38 ;對應的 math.MaxFloat64 常量大約是 1.8e308 。它們分別能表示的最小值近似為 1.4e-45 和 4.9e-324 。
float32 IEEE-754 32位浮點型數
float64 IEEE-754 64位浮點型數
float 轉換為 int
如果要將整數轉換為浮點數或將浮點數轉換為int,則可以通過將變量轉換為所需的數據類型來實現。

復數
還有另一種通常被忽略的數字數據類型,即復數數據類型。這些與浮點數據類型非常相似,有兩種不同的大小,您可以選擇 complex64 或 complex128 。
complex64 32 位實數和虛數
complex128 64 位實數和虛數
布爾
讓我們看看如何在我們的Go程序之一中使用它:
var amazing bool
amazing = true
if amazing {
subscribeToChannel()
}
如果我們想在程序中做一些布爾邏輯會怎樣?好了,使用 || 和 && 運算符,我們可以:

字符串

常量
常量是Go語言中我們最終的基本數據類型。它們使我們可以指定在程序執行過程中不會改變的不可變值。
const meaningOfLife = 42