內建變數型別
-
bool,string
-
(u)int,(u)int8,(u)int16,(u)int32,(u)int64,uintptr
無長度 int 的實際長度取決於作業系統位數(32/64)
uintptr 為指標型別 -
byte,rune
rune 為 Go 語言的字元型相當於其他語言的 char ,長度為4位元組 int32
-
float32,float32,complex64,complex128
complex 為複數(1+1i)
強制型別轉換
golang有嚴格的型別匹配,不同的型別之間通常需要手動轉換(interface型別除外,以後詳細講解),編譯器不會進行自動轉換
修改後:
浮點數進度
浮點數運算會丟失精度,解決方法很多,在測試程式碼中提供了一種,思路為:如果要保留m位小數,對m + 1位加0.5後四捨五入
程式碼
package main import ( "fmt" "math" "math/cmplx" ) func variableZeroValue() { //賦空值 var a int var s string fmt.Printf("%d %q\n", a, s) } func variableInitialValue() { //初始變數,Go語言非常嚴格,定義了就要用到 //定義多個變數可賦初值也可不賦 var a, b int = 3, 4 var s string = "abc" fmt.Println(a, b, s) } func variableTypeDeduction() { //推斷型別 var a, b, c, d = 3, 4, true, "def" println(a, b, c, d) } func variableShorter() { a, b, c, d := 3, 4, true, "def" b = 7 fmt.Println(a, b, c, d) } var name = "jj" var age = 24 var ( name1 = "aa" age1 = 22 ) func euler() { //驗證尤拉公式 fmt.Printf("%.3f\n", cmplx.Exp(1i*math.Pi)+1) //cmplx.Pow(math.E, 1i*math.Pi) + 1) } func triangle() { var a, b int = 3, 4 var c int c = int(math.Sqrt(float64(a*a + b*b))) fmt.Println(c) } func main() { fmt.Println("Hello World") variableZeroValue() variableInitialValue() variableTypeDeduction() variableShorter() fmt.Println(name, age) fmt.Println(name1, age1) euler() triangle() }