Golang學習筆記-1.5 常量

來源:互聯網
上載者:User

本文系第五篇Golang語言學習教程
在Go語言中,“常量”用於表示固定的值。
每種常量的潛在類型都是基礎類型:bool、string、int、float32、float64
比如5 -1 Go is interesting 3.1415

常量定義

一個常量聲明語句定義了常量的名字,和變數的聲明文法類似,用關鍵字const定義常量
例:

package main  import "fmt"func main(){        const pai = 3.141592 //定義常量pai        fmt.Println(pai)}

以上程式輸出結果:

3.141592

一個常量只能賦值一次,不能再賦值其他的值。否則報錯cannot assign to pai
例:

package main  import "fmt"func main(){        const pai = 3.141592 //定義常量pai        pai = 2        fmt.Println(pai)}

所有常量的運算都可以在編譯期完成,並且因為函數調用發生在運行時,所以不能將函數的傳回值賦值給常量
例:

package main  import (        "fmt"        "math")func main(){        var a = math.Sqrt(5) //允許將函數的傳回值賦值給變數 a        const b = math.Sqrt(5) //不允許將函數的傳回值賦值給常量 b        fmt.Println(a,b)}

以上程式中,因為a是變數,所以可以將函數的傳回值賦給a。
b是常量,它的值需要在編譯的時候就確定。而函數的傳回值只會在運行計算,所以以上程式會報錯const initializer math.Sqrt(5) is not a constant

常量類型

常量可以規定類型,也可以不規定類型。
如果不規定類型,那麼它的類型就是不確定的。
例:

package main  import (        "fmt")func main(){        const a,b = 3,4 //賦值常量 a,b  ,ab沒有類型        var c float64 = a //定義一個類型為float64的變數 c ,賦值a        var d complex128 = b //定義一個類型為complex128的變數 d ,賦值b        fmt.Printf("c's type is %T,d's type is %T\n",c,d)}

以上程式輸出結果:

c's type is float64,d's type is complex128

以上程式中,將 a,b 分別賦值給變數 c , d 並輸出c,d的類型。
由此可以看出,常量的類型是根據運算式推斷得出。

枚舉類型

普通枚舉類型

package main  import "fmt"func main(){        const (                cpp = 0                java = 1                python = 2                golang = 3        )        fmt.Println(cpp, java, python, golang)}

以上程式定義了一個普通的const枚舉類型

自增枚舉類型

例1:

package main  import "fmt"func main(){        const (                cpp = iota                java                python                golang                javascript                perl        )        fmt.Println(cpp, java, python, golang, javascript, perl)}

iota常量產生器:用於產生一組相似規則初始化的常量,但不用每行都寫一遍初始設定式。

以上程式中,在const聲明語句中,在第一個常量聲明所在的行,iota被置為0,然後在每一個有常量聲明的行加一。
以上程式輸出結果:

0 1 2 3 4 5

例2:
在複雜的常量運算式中使用iota

package main  import "fmt"func main(){        const (                b = 1 <<(10* iota)                KB                MB                GB                TB                PB                EB        )        fmt.Println(b, KB, MB, GB, TB, PB, PB, EB)}

左移運算子”<<”是雙目運算子。左移n位就是乘以2的n次方。 其功能把”<<”左邊的運算數的各二進位全部左移若干位,由”<<”右邊的數指定移動的位元,高位丟棄,低位補0。

以上程式中,自增枚舉每一行如下:
b = 1 * 2^(10 * 0)次方
KB = 1 * 2^(10 * 1) = 1 * 2^10 = 1024
MB = 1 * 2^(10 * 2) = 1 * 2^20 = 1048576
......

以上程式輸出結果:

1 1024 1048576 1073741824 1099511627776 1125899906842624 1125899906842624 1152921504606846976

以上為學習Golang常量篇

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.