開心檔之Go 語言常量
常量是一個簡單值的識別符號,在程式執行時,不會被修改的量。
常量中的資料型別只可以是布林型、數字型(整數型、浮點型和複數)和字串型。
常量的定義格式:
const identifier [type] = value
你可以省略型別說明符 [type],因為編譯器可以根據變數的值來推斷其型別。
- 顯式型別定義:
const b string = "abc"
- 隱式型別定義:
const b = "abc"
多個相同型別的宣告可以簡寫為:
const c_name1, c_name2 = value1, value2
以下例項演示了常量的應用:
package main
import "fmt"
func main() {
const LENGTH int = 10
const WIDTH int = 5
var area int
const a, b, c = 1, false, "str" //多重賦值
area = LENGTH * WIDTH
fmt.Printf("面積為 : %d", area)
println()
println(a, b, c)
}
以上例項執行結果為:
面積為 : 501 false str
常量還可以用作列舉:
const ( Unknown = 0 Female = 1 Male = 2)
數字 0、1 和 2 分別代表未知性別、女性和男性。
常量可以用len(), cap(), unsafe.Sizeof()函式計算表示式的值。常量表示式中,函式必須是內建函式,否則編譯不過:
package main
import "unsafe"
const (
a = "abc"
b = len(a)
c = unsafe.Sizeof(a)
)
func main(){
println(a, b, c)
}
以上例項執行結果為:
abc 3 16
iota,特殊常量,可以認為是一個可以被編譯器修改的常量。
iota 在 const關鍵字出現時將被重置為 0(const 內部的第一行之前),const 中每新增一行常量宣告將使 iota 計數一次(iota 可理解為 const 語句塊中的行索引)。
iota 可以被用作列舉值:
const ( a = iota b = iota c = iota)
第一個 iota 等於 0,每當 iota 在新的一行被使用時,它的值都會自動加 1;所以 a=0, b=1, c=2 可以簡寫為如下形式:
const ( a = iota b c )
package main
import "fmt"
func main() {
const (
a = iota //0
b //1
c //2
d = "ha" //獨立值,iota += 1
e //"ha" iota += 1
f = 100 //iota +=1
g //100 iota +=1
h = iota //7,恢復計數
i //8
)
fmt.Println(a,b,c,d,e,f,g,h,i)
}
以上例項執行結果為:
0 1 2 ha ha 100 100 7 8
再看個有趣的的 iota 例項:
package main
import "fmt"
const (
i=1<<iota
j=3<<iota
k
l
)
func main() {
fmt.Println("i=",i)
fmt.Println("j=",j)
fmt.Println("k=",k)
fmt.Println("l=",l)
}
以上例項執行結果為:
i= 1j= 6k= 12l= 24
iota 表示從 0 開始自動加 1,所以 i=1<<0, j=3<<1( << 表示左移的意思),即:i=1, j=6,這沒問題,關鍵在 k 和 l,從輸出結果看 k=3<<2,l=3<<3。
簡單表述:
- i=1:左移 0 位,不變仍為 1。
- j=3 :左移 1 位,變為二進位制 110,即 6。
- k=3 :左移 2 位,變為二進位制 1100,即 12。
- l=3 :左移 3 位,變為二進位制 11000,即 24。
注:<<n==*(2^n)。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70026554/viewspace-2939922/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 開心檔之Go 語言環境安裝Go
- go 語言常量Go
- GO語言————4.3常量Go
- 開心檔之Go教程Go
- 開心檔之Go 併發Go
- 開心檔之Go 錯誤處理Go
- 開心檔之Java switch case 語句Java
- Go語言複製檔案Go
- GO語言學習筆記之mac環境go語言配置Go筆記Mac
- 區塊鏈開發之Go語言—IO操作區塊鏈Go
- Go語言淺嘗之方法Go
- Go語言庫系列之emailGoAI
- Go 語言處理 yaml 檔案GoYAML
- 關於C語言的常量C語言
- Go語言專案編譯之後找不到配置檔案Go編譯
- 開心檔之MySQL 管理MySql
- Go語言————1、初識GO語言Go
- Go 語言操作 MySQL 之 CURD 操作GoMySql
- Go 語言操作 MySQL 之 SQLX 包GoMySql
- Go 語言解析 yaml 檔案的方法GoYAML
- 檔案複製(Go語言實現)Go
- go語言安卓開發Go安卓
- Go語言學習(6) - 資料型別轉換和常量以及iotaGo資料型別
- C語言進階[2]:字串常量C語言字串
- [Go語言整合開發環境之GoLand安裝使用]開發環境GoLand
- 開心檔之C++ 引用C++
- 開心檔之MySQL ALTER命令MySql
- GO語言————2、GO語言環境安裝Go
- Go 語言基礎之 Context 詳解GoContext
- Go 語言操作 MySQL 之 預處理GoMySql
- go語言基礎之——iota的用法Go
- 十九、Go語言基礎之併發Go
- Go 語言操作 MySQL 之 事務操作GoMySql
- GO語言整合開發GoLand 2022GoLand
- GO 語言快速開發入門Go
- 如何開始學習Go語言Go
- Go語言開發環境搭建Go開發環境
- go語言開發有哪些工具Go