整型分爲如下兩個大類: 按長度分爲:int八、int1六、int3二、int64 對應的無符號整型:uint八、uint1六、uint3二、uint64數組
其中,uint8
就是咱們熟知的byte型,int16
對應C語言中的short型,int64
對應C語言中的long型。函數
func main(){ // 十進制 var a int = 10 fmt.Printf("%d \n", a) // 10 fmt.Printf("%b \n", a) // 1010 佔位符%b表示二進制 // 八進制 以0開頭 var b int = 077 fmt.Printf("%o \n", b) // 77 // 十六進制 以0x開頭 var c int = 0xff fmt.Printf("%x \n", c) // ff fmt.Printf("%X \n", c) // FF // 變量的內存地址 fmt.Printf("%p \n", &a) // 0xc00004c080 佔位符%p表示十六進制的內存地址
Go語言支持兩種浮點型數:float32
和float64
。性能
func main() { fmt.Printf("%f\n", math.Pi) fmt.Printf("%.2f\n", math.Pi) }
Go語言中以bool類型進行聲明布爾型數據,布爾型數據只有true(真)和false(假)兩個值。ui
注意: 1. 布爾類型變量的默認值爲false。 2. Go 語言中不容許將整型強制轉換爲布爾型. 3. 布爾型沒法參與數值運算,也沒法與其餘類型進行轉換。編碼
Go 語言裏的字符串的內部實現使用UTF-8編碼。 字符串的值爲雙引號(")中的內容。
注意:在go中,''單引號中存放的是單個的字符,而不是字符串。code
組成每一個字符串的元素叫作「字符」,能夠經過遍歷或者單個獲取字符串元素得到字符。 字符用單引號(’)包裹起來。內存
Go 語言的字符有如下兩種: 1. uint8
類型,或者叫 byte
型,表明了ASCII碼
的一個字符。 2. rune
類型,表明一個 UTF-8字符
。字符串
當須要處理中文、日文或者其餘複合字符時,則須要用到rune類型。rune類型實際是一個int32。字符串處理
Go 使用了特殊的 rune 類型來處理 Unicode,讓基於 Unicode 的文本處理更爲方便,也可使用 byte 型進行默認字符串處理,性能和擴展性都有照顧。string
// 遍歷字符串 func traversalString() { s := "hello沙河" 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() } // 結果爲 104(h) 101(e) 108(l) 108(l) 111(o) 230(æ) 178(²) 153() 230(æ) 178(²) 179(³) 104(h) 101(e) 108(l) 108(l) 111(o) 27801(沙) 27827(河)
要修改字符串,須要先將其轉換成[]rune或[]byte,完成後再轉換爲string。不管哪一種轉換,都會從新分配內存,並複製字節數組。
func changeString() { s1 := "big" // 強制類型轉換 byteS1 := []byte(s1) byteS1[0] = 'p' fmt.Println(string(byteS1)) s2 := "白蘿蔔" runeS2 := []rune(s2) runeS2[0] = '紅' fmt.Println(string(runeS2)) }
Go語言中只有強制類型轉換,沒有隱式類型轉換。 基本語法:T(表達式)
。
其中,T表示要轉換的類型。表達式包括變量、複雜算子和函數返回值等. 好比計算直角三角形的斜邊長。
func sqrtDemo() { var a, b = 3, 4 var c int // math.Sqrt()接收的參數是float64類型,須要強制轉換 c = int(math.Sqrt(float64(a*a + b*b))) fmt.Println(c) }