這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
1 整數
在 Go 語言中,如果不加特殊首碼,都是10進位表示,例如:“100”
整數可以直接用指數形式,例如:“1E9”,意思是 1 * (10^9),1 乘以 10 的 9 次方
整數的加減法用 + 和 - 號,乘法用 * 號,除法用 / 號, 得到的商是整數,例如 5 / 2 = 2,而 % 號是求餘(模數), 例如 5 % 2 = 1
在 Go語言中,整數類型分為帶符號整型和不帶符號整型,接著又分別按照長度各自劃分為4個類型。
帶符號整型 int8 int16 int32 int64
不帶符號整型 uint8 uint16 uint32 uint 64
除此之外還有預設類型 int 和 uint,目前都是32位,未來可能會變成64位
還有2個特殊的整型別名 ,和字串很相關,分別是:byte(uint8),rune(int32),到字串相關時在做解釋
整數比較用 > / < / == / != / <= / >=,結果是布爾類型, true or false
按位元運算 &(且), |(或), ^(異或),&^(與非),<<(左移),>>(右移)
異或自身,相當於取反碼, 例如 ^1 = -2(ps:(^-1) + 1 = 求-1的補碼)
2 浮點數
在 Go 語言中,浮點數分為 float32 和 float64 兩種類型,符合 IEEE 754 的規定。
只有整數部分的浮點數,要加小數點標識,例如浮點數 1 的標識為 1.0
對於整數字面量 和浮點數字面量,Go 根據使用的場合,會自動 整數->浮點數 或 浮點數-> 整數 轉換
3 複數
基本上很少用到,簡單介紹下
在 Go 語言中,複數分為 complex64 和 complex128,可以用 0+1i 的格式表示
4 布爾
在 Go 語言中,布爾值的類型為 bool,值是 true 或 false
布爾可以做3種邏輯運算,&&(邏輯且),||(邏輯或),!(邏輯非)
在邏輯運算式中,Go語言也支援短路判斷
布爾類型的值不支援其他類型的轉換
5 字串
在 Go 語言中,組成字串的最小單位是字元,儲存的最小單位是位元組,字串本身不支援修改。
位元組是資料存放區的最小單元,每個位元組的資料都可以用整數表示,例如一個位元組儲存的字元a,實際儲存的是97而非字元的字形,將這個實際儲存的內容用數字表示的類型,稱之為byte。
字元是 UTF-8 編碼的 Unicode 字元,Unicode 為每一個字元而非字形定義唯一的碼值(即一個整數),例如 字元a 在 unicode 字元表是第 97 個字元,所以其對應的數值就是 97,也就是說對於Go語言處理字元時,97 和 a 都是指的是字元a,而 Go 語言將使用數值指代字元時,將這樣的數值稱呼為 rune 類型
通常Unicode表示一個字元時,通常會用"U+"然後緊接著一組十六進位的數字來表示這個字元,例如 字元a 通常用 U+0061 來表示。
在 Go 語言中,如果直接按照字元的字形的話,可以用單引號 (') 括起來表示,例如 'a' ,也可按照碼值來表示,可以用 \xNN ,\uNNNN , \UNNNNNNNN 的 格式,每個 N 代表一位元。例如 字元a 可以用 \x61 或 \u0061 或 \U00000061
在 Go 語言中,可以用兩種方式表示字串,一種是雙引號 (") 括在一起的,可以包含逸出字元。另一種是使用反引號 (`) 括起的,可以包含換行等格式字元,感覺有點象其他語言的 heredoc 。
因為組成字串的最小單位是字元,而儲存的最小單位是位元組,對於字串遍曆,只有全是小於1個位元組字元(即碼值小於256)組成的,可以直接遍曆或者轉成byte切片遍曆,而包含大於1個位元組字元組成的,最安全的做法是轉換成rune切片。