Go學習筆記(7)Go的變量與常量

Go的變量

全局變量(在函數體之外的變量)

  • 聲明方式:var 變量名 變量類型
  • 賦值:變量名 = 變量的值或表達式
  • 聲明的同時賦值:var 變量名 [變量類型] = 變量的值或表達式
    • 變量的類型可以省略,由系統自動推斷
    var a int = 1
    var b = 2.1
    
  • 多個全局變量的聲明可以使用var()合併(當然也能同時賦值)
    var (
    	a int
    	b bool
    	str string
    )
    
    除了使用var()合併的方式,也可以使用並行的方式:
    var a, b, c int
    a, b, c = 1, 2, 3
    

局部變量(函數體內或者方法體內)

  • 可以和上面的全局變量一樣,使用var 變量名 [變量類型] = 變量值或表達式 這種方式來聲明和賦值
  • 除了以上的方式,還可以使用:=的形式簡寫(可以省略掉var關鍵字,這種方式只能是局部變量使用)
    a := 1
    b := "hello"
    
  • 多個局部變量的聲明不可用var()這種方式,只能使用並行方式,可以結合簡寫形式使用
    a, b, c := 1, 2, "abc"
    

需要注意幾點

  • 如果聲明瞭一個局部變量卻沒有在代碼塊中使用它,會得到編譯錯誤:變量名 declared but not used (堅決不冗餘~~~)
  • 如果在相同的代碼塊中,我們不可以再次對於相同名稱的變量使用初始化聲明(賦值可以)
  • 所有變量都可以使用類型推斷(但是一些特定類型如int32這種就難以自動推斷了)
  • 儘管變量的標識符必須是唯一的,但你可以在某個代碼塊的內層代碼塊中使用相同名稱的變量,則此時外部的同名變量將會暫時隱藏(結束內部代碼塊的執行後隱藏的外部同名變量又會出現,而內部同名變量則被釋放),你任何的操作都只會影響內部代碼塊的局部變量
  • 可以使用_來表示拋棄值
    _, a = 1, 2
    

類型轉換

  • Go中不存在隱式轉換,所有類型轉換必須顯示聲明
  • 轉換隻能發生在兩種相互兼容的類型之間 (比如數值型和布爾型之間就無法轉換)
  • 類型轉換的格式:變量A = 類型(變量B)
    var a float32 = 1.1
    b := int(a)
    

Go的常量

  • 常量使用關鍵字const定義,用於存儲不會改變的數據

  • 常量的定義格式與變量基本相同,const 常量名 [常量類型] = 常量值,其中常量類型可以省略,由系統自動推斷

    const PI = 3.141592658
    const str string = "hello"
    
  • 多個常量的定義方式同多個變量的定義方式類似,如果有多個常量需要定義賦值,可以使用const()常量組的方式合併。

    const(
    	PI = 3.141592658
    	str = "hello"
    )
    

    如果不提供初始值,將使用上行常量的值:

    const(
    	a = "A"
    	b                             // b爲 “A”
    )
    
  • 常量的值必須在編譯時就能確定,可以在賦值表達式中涉及計算過程,但是所有用於計算的值必須在編譯期間就能獲得

  • 自定義的函數在編譯期間均屬於未知,因此無法用於常量的賦值,但一些內置函數比如len()就可以使用

  • 反斜槓\在常量表達式中可以作爲多行的連接符使用

    const c = 0.4232324242328786350073402\
    		  378371802711809823413478937
    
  • 使用常量來用作枚舉

    const (
    	Spring = 1
    	Summer = 2
    	Autumn = 3
    	Winter = 4
    )
    

        除了上面這種寫法,還可用常量的計數器iota來操作,它從0開始,常量組中每定義一個新的常量,該值自動加1。每當遇到一個新的const關鍵字,iota的值會重置爲0。上面的枚舉可以用下面的形式來表示(SummerAutumnWinter 沒有賦值,它們的值取上一行的值,即iota

    const (
    		Spring = iota                  //Spring=iota=0
    		Summer                         //Summer=iota=1
    		Autumn                        //Autumn=iota=2
    		Winter                        //Winter=iota=3
    )
    const (                               //這裏新定義了一個常量組,iota的值置爲0
    	Man = iota                        //Man=iota=0                        
    	Female                            //Female=iota=1
    )
    
    
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章