型別 - skynocover/Wiki-for-GoLang GitHub Wiki

型別

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的位置

https://play.golang.org/p/jSFietfu6OR

https://play.golang.org/p/qzlVojJ5M8s

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