02.內建變數型別

JJJhr發表於2024-07-06

內建變數型別

  • 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()
}

相關文章