GO基本數據類型

go基本數據類型

? ? ? ? go語言中基本數據類型大體可以分為:整型、浮點型、布爾型、字符串。

? ? ? ? 首先看整型,在go語言中整型的小分類比較多有(int、int8、int16、int32、int64)上面表示的是有符號的整型,對應的還有無符號的整型(uint、uint8、uint16、uint32、uint64)有符號和無符號的類型之間的區別是有符號的整型取值的區間有正有負,而無符號的類型取值的區間只有正數,例如uint8的取值區間為0-225,而225怎么算出來的呢,這里的int8表示的是一個字節也就是8bit,用二進制來表示就是00000000~11111111換算成十進制就是0~225那么這是無符號類型的取值范圍,如果是有符號的int8的話就是-128~127,我們可以這么算在計算機中表示有符號的類型那么最高的位數將用來表示符號0代表正數1代表負數所以少了一位最高位,他們的取值范圍換算成十進制就是-128~127,至于后面的16,32,64都是類似的并且取值范圍在源碼中都有記錄。(整型當中有兩個很特殊的存在一個是int32還有一個是uint8,在java語言中的chat字符型在go語言中用rune表示并且rune和int32是完全等同的rune就是int32的一個別名,取兩個名字只是為了來區分字符和32位整型,uint8的還有一個別名就是我們很熟悉的byte,在所有方面都等同于uint8,按照慣例,用于區分字節值和8位無符號整數值。)


1.1

? ? ? ? 如果我們定義一個整型不給它指定決定的類型的話他默認就是int類型,在源碼解釋中int類型代表大小至少大于int32的類型但是和int32位不同的類型如圖1.1,無符號uint和int差不多就在于符號的區別。

? ? ? ? 然后就是浮點型,浮點型的話就沒有整型那么多的分類了,在go中浮點型只有兩種一直是float32還有就是float64,如果我們不指明類型的話類型的選擇就和你的機器類型有關如果你是32位機就是float32,64位機的話就是float64,筆者用的就是64位機默認的話定義一個浮點數給它指定的類型就是float64如果你可以預知自己不需要那么大的空間來存儲也可以顯示的指定類型為float32可以節省一半的內存。

? ? ? ? 接下來布爾類型,和傳統的很多編程語言一樣go語言中布爾類型只有兩個值ture或false用法大同小異,沒有什么可以記錄的。

? ? ? ? 最后的話就是我們使用頻率最高的類型之一的字符串類型了,在go語言中的字符串類型和java當中基本沒有區別。

? ? ? ? 在最后的最后補充一個小筆記就是上面提到的計算機中表示一個負數,是把最高位用來表示正負,以8位2進制為例1(00000001)推理得出-1的話就是(100000001)但是計算的話就會出問題-1+1在十進制中等于0但是按照這個規則用2進制的數進行計算相加的話就是-2,所以就有了補碼-1這樣的有符號數不用10000001來表示而是用它的補碼來表示(補碼的求法:向我們上面按照之前的規則最高位代表符號表示-1的二進制數值10000001這是-1的原碼,最高位表示符號的不動后面所有位上面的數取反然后加1就是11111111就是-1的補碼)然后用00000001+11111111=1000000000由于是8位的數去掉最高位就是00000000等于0

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容