uint8
也就是byte
型git
無符號整型 | 取值範圍 |
---|---|
uint8 |
0 到 255 |
uint16 |
0 到 65535 |
uint32 |
0 到 4294967295 |
uint64 |
0 到 18446744073709551615 |
int16
對應C語言中的short
型,int64
對應C語言中的long
型github
有符號整型 | 取值範圍 |
---|---|
int8 |
-128 到 127 |
int16 |
-32768 到 32767 |
int32 |
-2147483648 到 2147483647 |
int64 |
-9223372036854775808 到 9223372036854775807 |
在使用int
和uint
類型時,不能假定它是32位或64位的整型,而是考慮int
和uint
可能在不一樣平臺上的差別。數組
特殊整型 | 描述 |
---|---|
uint |
32位操做系統上就是uint32,64位操做系統上就是uint64 |
int |
32位操做系統上就是int32,64位操做系統上就是int64 |
uintptr |
無符號整型,長度被設定爲足夠存放一個指針 |
const a = 0b00001101 // 二進制1101 == 十進制13 const b = 0333 // 0333 == 0o333,八進制333 == 十進制 64 * 3 + 3 * 8 + 3 = 219 const c = 0xAF // 十六進制AF == 十進制 10 * 16 + 15 = 175
float32
精確到小數點後7位,最大範圍可使用常量定義:math.MaxFloat32
float64
精確到小數點後15位,最大範圍可使用常量定義:math.MaxFloat64
。而且儘量地使用float64
,由於math
包中全部有關數學運算的函數都會要求接收這個類型==
或者!=
來比較浮點數時應當很是當心,最好在正式使用前測試對於精確度要求較高的運算複數使用re+imI
來表示,其中re
表明實數部分,im
表明虛數部分,I
表明根號負1函數
complex64
,32位實數和虛數complex128
,64位實數和虛數;最好使用complex128
做爲計算類型,由於相關函數都使用這個類型的參數。var c1 complex64 = 5 + 10i // 5 + 10i == complex(5, 10) fmt.Printf("輸出:%v", c1) // 輸出:5+10i
布爾型數據只有true
和false
兩個值,默認爲false
post
字符串是一種值類型,且值不可變,更深刻地講,字符串是byte類型
的固定長度數組。性能
Go語言支持如下2種形式字符串:測試
解釋字符串ui
該類字符串使用雙引號括起來,其中的相關的轉義字符將被替換,這些轉義字符包括:編碼
\n
:換行符\r
:回車符\t
:tab 鍵\u
或\U
:Unicode字符\\
:反斜槓自身\'
:單引號\"
:雙引號非解釋字符串操作系統
該類字符串使用反引號括起來,支持換行,例如:
package main import "fmt" func main() { const a = `\n:這裏不會換行 這裏纔會` // `\n:這裏不會換行 // 這裏纔會` 做爲一個完整的字符串原樣輸出 fmt.Println(a) }
+
a := "我是A" + ",我5歲" a += ",身高180cm" fmt.Println(a) // 我是A,我5歲,身高180cm
byte
和rune
類型組成每一個字符串的元素叫作字符,能夠經過遍歷或者單個獲取字符串元素得到字符。 字符用單引號'
包裹起來。
Go語言的字符有如下兩種:
uint8
類型,或者叫byte
型,表明了ASCII碼
的一個字符rune
類型,表明一個UTF-8
字符,rune
類型實際是一個int32
Go語言使用了特殊的rune
類型來處理Unicode,讓基於Unicode的文本處理更爲方便,也可使用byte
型進行默認字符串處理,性能和擴展性都有照顧。
s := "byte,no,rune我是" for i := 0; i < len(s); i++ { //byte fmt.Printf("%v(%c) ", s[i], s[i]) } fmt.Println() for _, r := range s { //rune fmt.Printf("%v(%c) ", r, r) } fmt.Println() // 98(b) 121(y) 116(t) 101(e) 44(,) 110(n) 111(o) 44(,) 114(r) 117(u) 110(n) 101(e) 230(æ) 136() 145() 230(æ) 152() 175(¯) // 98(b) 121(y) 116(t) 101(e) 44(,) 110(n) 111(o) 44(,) 114(r) 117(u) 110(n) 101(e) 25105(我) 26159(是)
由於UTF-8
編碼下一個中文漢字由3~4個字節組成,因此咱們不能簡單的按照字節去遍歷一個包含中文的字符串,不然就會出現上面輸出中第一行的結果。
字符串底層是一個byte
數組,因此能夠和[]byte
類型相互轉換。字符串是不能修改的,字符串是由byte
組成,因此字符串的長度是byte
的長度。rune
類型用來表示utf-8
字符,一個rune
字符由一個或多個byte
組成。
Go語言中只有強制類型轉換,沒有隱式類型轉換。
a, b := 3, 4 var c int // math.Sqrt()接收的參數是float64類型,須要強制轉換 c = int(math.Sqrt(float64(a*a + b*b))) fmt.Println(c) // 5