int 類型 | 範圍 |
---|---|
int | 有符號 8 位整型 (-128 到 127) |
int16 | 有符號 16 位整型 (-32768 到 32767) |
int32 | 有符號 32位整型 (-2147483648 到 2147483647) |
int64 | 有符號 64位整型 (-9223372036854775808 到 9223372036854775807) |
uint8 | 無符號 8 位整型 (0 到 255) |
uint16 | 無符號 16位整型 (0 到 65535) |
uint32 | 無符號 32位整型 (0 到 4294967295) |
uint64 | 無符號 64位整型 (0 到 18446744073709551615) |
類型 | 描述 |
---|---|
uint | 32位操做系統上就是uint32,64位操做系統上就是uint64 |
int | 32位操做系統上就是int32,64位操做系統上就是int64 |
uintptr | 無符號整型,用於存放一個指針 |
Go語言中沒法直接定義二進制數等數組
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 }
float32 浮點數的最大範圍約爲 3.4e38,可使用常量定義 math.MaxFloat32函數
float64 浮點數的最大範圍約爲 1.8e308 ,可使用一個常量定義: math.MaxFloat64性能
func main() { fmt.Printf("%f\n", math.Pi) fmt.Printf("%.2f\n", math.Pi) } // 使用 %f 打印浮點型數據
var c1 complex64 c1 = 1 + 2i var c2 complex128 c2 = 2 + 3i fmt.Println(c1) fmt.Println(c2)
複數有實部和虛部,complex64的實部和虛部爲32位,complex128的實部和虛部爲64位ui
注意:編碼
- 布爾型變量的默認值爲 false
- Go語言中不容許將整型強制轉換爲布爾型
- 布爾型沒法參與數值運算,也沒法與其餘類型進行轉換
Go 語言中的字符串原生數據類型出現,使用字符串就行使用其餘原生數據類型 (int 、bool、 float3二、 float64 等) 同樣操作系統
Go 語言裏的字符串的內部實現使用 utf-8 編碼翻譯
字符串的值爲 雙引號 」 「 中的內容,能夠在Go語言的源碼中直接添加非 ASCII碼字符指針
s1 := "hello" s2 := "你好"
轉義符 | 含義 |
---|---|
\r | 回車符(返回行首) |
\n | 換行符(直接跳到下一行的同列位置) |
\t | 製表符(tab) |
‘ | 單引號 |
「 | 雙引號 |
\ | 反斜槓 |
s1 := ` 第一行 第二行 第三行 ` // 使用 ` 符號 fmt.Println(s1)
方法 | 做用 |
---|---|
len(str) | 返回字符串長度 |
+ 或 fmt.Sprintf | 字符串拼接 |
strings.Split | 字符串分割 |
strings.contains | 判斷是否包含子字符串 |
sstrings.HasPrefix|strings.HasSuffix | 前綴|後綴判斷 |
strings.Index() | strings.LastIndex() | 子字符串出現的位置 |
strings.Join(a[]string, sep string) | join 操做 |
func main(){ str := "hello world" // strings.split(text,"分隔符") 字符串分割 fmt.Println(strings.Split(str, " ")) // strings.Contains(text,"子字符串") 判斷字符串中是否包含子字符串 fmt.Println(strings.Contains(str, "hello")) // strings.HasPrefix(text,"子字符串") 判斷是否以子字符串開頭 fmt.Println(strings.HasPrefix(str, "hello")) // strings.HasSuffix(text,"子字符串") 判斷是否以子字符串結尾 fmt.Println(strings.HasSuffix(str, "world")) // strings.index(text,"子字符串") 輸出子字符串在字符串中的位置 fmt.Println(strings.Index(str, "o")) // strings.LastIndex(text,"子字符串") 輸出子字符串最後在字符串中的位置 fmt.Println(strings.LastIndex(str, "o")) // strings.Join(text_list,"拼接符") 將一個字符串切片以拼接符鏈接起來 str_list := []string{"hello","world","goland","is","nb"} fmt.Println(strings.Join(str_list, ",")) }
/* result >>>>> <<<<< [hello world] true true true 4 7 hello,world,goland,is,nb <<<<< */
組成每一個字符串的元素叫作 「字符」 , 能夠經過遍歷或者單個獲取字符串元素得到字符code
字符用單個引號 ’ 包裹起來對象
var a := '中' var b := 'x'
- uint8 類型 或者兼作 byte 類型, 表明了ASCII 碼的一個字符
- rune 類型 表明一個 utf-8 字符
// 遍歷字符串 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() }
/* result >>>>> 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(河) */
由於UTF8編碼下的一箇中文漢字由3~4個字節組成,因此咱們不能簡單的按照字節去遍歷一個包含中文的字符串,不然就會出現上面輸出第一行的結果
字符串底層是一個byte數組,因此能夠和 []byte 類型互相轉換
字符串是不能修改的
字符串是由byte 字節組成,因此字符串的長度是byte字節的長度
rune類型用來表示utf8字符,一個rune字符有一個或多個byte組成
要修改字符串,須要先將其轉換成 []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 表示要轉化的類型
表達式包括變量、 複雜算子、 函數返回值等