golang 學習筆記 1.3 基本類型

1.3 基本類型

更明確的數字類型命名,支持 Unicode,支持常用數據結構。

常用數據結構

支持八進制、十六進制,以及科學記數法。標準庫 math 定義了各數字類型取值范圍。

a, b, c, d := 071, 0x1F, 1e9, math.MinInt16

空指針值 nil,而非 C/C++ NULL

1.4 引用類型

引用類型包括 slice、map 和 channel。它們有復雜的內部結構,除了申請內存外,還需要初始化相關屬性。
內置函數 new 計算類型大小,為其分配 零值內存 ,返回指針。而 make 會被編譯器翻譯成具體的創建函數,由其分配內存和初始化成員結構,返回 對象非指針

a := []int{0, 0, 0} // 提供初始化表達式。
a[1] = 10

b := make([]int, 3) // make slice
b[1] = 10

c := new([]int)
c[1] = 10   // Error: invalid operation: c[1] (index of type *[]int)

有關引用類型具體的內存布局,可參考后續章節。

1.5 類型轉換 ( 簡單記錄 )

不支持隱式類型轉換,即便是從窄向寬轉換也不行。

var b byte = 100
var n int = b // Error: cannot use b (type byte) as type int in assignment
var n int = int(b) // 顯式轉換

使用括號避免優先級錯誤。

*Point(p) // 相當于 *(Point(p))
(*Point)(p)
<-chan int(c) // 相當于 <-(chan int(c))
(<-chan int)(c)

同樣不能將其他類型當 bool 值使用。

a := 100
if a { // Error: non-bool a (type int) used as if condition
    println("true")
}
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容