1. 程式人生 > >三:go語言變數,常量,列舉,布林

三:go語言變數,常量,列舉,布林

1:一個包下面可以有多個人原始檔

2:import按照書序匯入載入(優先執行檔案裡的init方法)

3:類型別名不能參加正常運算(要同一個型別的前提下才行)

4:申明的變數沒有使用,也會報錯

5:定義包名 -> 最好資料夾唯獨定義包名

6:var a,b,c = 11,21,31  /  a,b,c := 11,21,31  (全部變數必須要有var關鍵字,區域性變臉可以不用var)

7:var a,_,c = 11,21,31  //下劃線表示把值丟到垃圾桶

8:型別轉換(不相容的型別是不能轉換的)
var a int =3
var b float32 = 3.01
c := float32(a)
fmt.Print(c)
fmt.Print(reflect.TypeOf(c))   //獲取值的型別


9:變數可見性
var name = "leyangjun"
var Name = "leyangjun"   --> 外部包呼叫的時候只能呼叫Name,不能呼叫name,小寫的會認為是私有變數

2.1:變數
    2.1.1 :申明變數
        var v1 int
        var v2 string
        var v4 [10]int 陣列
        var v5 struct{
            f int
        }


    2.1.2:變數初始化
        var v1 int = 10
        var v2 = 10 //編譯器可以自動推匯出v2的型別
        v3 := 10 //編譯器可以自動推匯出v3的型別(出現在 := 左邊的變數不應該是已經申明過得,否則會導致編譯錯誤)


    2.1.3:變數賦值
        var v10 int
        v10 = 123
        i,j = j,i //多重賦值,交換變數值


2.2 常量
    2.2.1 常量定義
        const Pi float64 = 3.14.。。。。。。。。。。。
        const (
        size int64 = 1024
            eof = -1
        )
        const u,v float32 = 0,3 //u = 0.0 ,v = 3.0 常量的多重賦值
        const a,b,c = 3,4,"leyangjun" //a=3,b=4,c="foo" ,無型別整型和字串常量(無型別常量)

    2.2.2 預定義變數
        const a = iota
        const b = iota //a,b的常量值都重置為0
        const(
            a = iota //0
            b = iota //1 ,計數開始加1
        )

    2.2.3 列舉
        const (
            Sunday = iota
            Monday
            Tuesday
            Wednesday
            Thursday
            Firday
            Saturday
            numberOfDays //這個常量沒有匯出,為私有,其他可以訪問【大寫字母開頭的常量在包外可見】
        )


2.3 型別
    1:布林型別 bool
    2:整型 int8,byte,int16,int,uint,uintptr
    3:浮點型別 float32,float64
    4:複數型別 complex64
    5: 字串型別 string
    6:字元型別 rune
    7: 錯誤型別 error

    go語言也支援符合型別
    1:指標 pointer
    2:陣列 array
    3:分片 slice
    4:字典 map
    5:通道 chan
    6:結構體 struct
    7:介面 interface

    2.3.1:布林型別
        var v1 bool
        v1 = true
        v2 := (1 == 2) //v2會被推到為bool型別

        注意:布林型別不能接受其他型別的賦值,不支援自動或強制型別轉換
        var b bool
        b = 1 //編譯錯誤
        b = bool(1) //編譯錯誤

        正確做法
        var b bool
        b = (1 != 0)
        fmt.PrintIn("Result:",b) //打印出true

    2.3.2:整型
        注意:int 和 int32在Go裡被認為是兩種不同型別
        var value1 value2
        value1 := 64 //value1將會被自動推導為int型別
        value2 = value1 //編譯錯誤

        value2 = int32(value1) //編譯通過

        數值運算:+ ,-, *, /
        比較運算:>, <, == ,>= ,<= ,!=


    2.3.3:浮點型號
        包含兩種:float32,float64,其中float32等價於C語言的float型別,float64等價於C語言double型別
        var fvalue1 float32
        fvalue1 = 12
        fvalue2 := 12.0 //如果不加小數點,fvalue2會被推導為整型而不是浮點型

        fvalue1 = fvalue2 //編譯錯誤
        fvalue1 = float32(fvalue2) //強制型別轉換


    2.3.4:字串
        var str string
        str = “leyangjun” //字串賦值
        ch := str[0] //取字串的第一個字元
        注意:字串的內容不能再初始化後被修改