型別 - skynocover/Wiki-for-GoLang GitHub Wiki
型別
-
bool
-
int8, uint8, int16, uint16, int32, uint32, int64, uint64, intptr, uintptr
-
float32, float64
-
complex64, complex128
-
string
type alias
byte = uint8 rune = int32
數字
可使用_來區分格數字
8_2 == 82
0_33 == 0_33
0x_Bad_Face == 0xBadFace
_82 //X
82_ //X
8__2 //X
complex
- complex64 實部與虛部都是float32
- complex128 實部與虛部都是float64
整數
func main() {
println(15 == 0xF) //0x,0X表十六進位
println(15 == 017) //0,0o,0O表八進位
}
無法編譯
0x10000000000000000 //需要65bit,因此任何整數型別都無法精確表示
浮點數
- 指數
1.23e2 == 123.0
123E2 == 12300.0
123.E+2 == 12300.0
0x1p-2 == 0.25 // (1 / 2^-2)
0x2.p10 == 2048 // (2 * 2^10)
rune
- rune 表示一個unicode的位置
func main() {
var temp uint8 = 50
var temp2 []byte = []byte{50}
log.Println(string(temp)) //2
log.Println(string(temp2)) //2
var temp rune = 50
var temp2 int32 = '2'
log.Println(string(temp)) //2
log.Println(string(temp2)) //2
var temp rune = 960
log.Println(string(temp)) //π
}
println('a'==97) //true
println('a'=='\141') //true
println('a'=='\x61') //true
println('a'=='\u0061') //true u後面接四個數字
println('a'=='\U00000061') //true U後面接八個數字
println(0x61=='\x61') //true
println('\n'==10)//true
println('\n'=='\x0A')//true
型別轉換
顯式型別轉換
T(v)
- v可以表示為T類型的值
- v莫認為整數型別(int或rune),且T為一個string型別
Inf NaN
- Inf 無窮大,除數為0時表示
- NaN not a number,被除數為0時表示
var a, b = 1.0, 0.0
println(a/b, b/b) // +Inf NaN