變數是乙個數學定義,它是乙個符號,表示某乙個事物的取值。在程式語言裡,它表示計算機能表示的抽象值概念或者說是計算結果。變數的體現在它的實際值可能在不斷地變動。go語言變數由數字、大小寫字母、下劃線組成,但首字母不能是數字。這一點同其他語言。
go語言標準的變數宣告使用var
關鍵字:
var variable type
go語言也允許一次性宣告多個同型別變數:
var variable1, variable2 type
go語言一共支援三種變數宣告:
明確指定變數型別,如果變數未經初始化,則預設賦值為零值。
根據賦值自行判定變數型別。
省略var(:= 左邊如果不是新的變數,會報編譯錯誤)
明確指定變數型別
var vname type
vname = value
例項
package main
import
"fmt"
func
main()
// 1 2 3
// steve
// // 0
// 0
// false
//
零值:
var a *
int// 指標
var a [
]int
// 陣列名
var a map
[string
]int
// map
var a chan
int// chan
var a func
(string
)int
// 函式
var a error
// error是介面
根據賦值自行判定變數型別var vname = value
例項
package main
import
"fmt"
func
main()
// true
省略var轉而使用:=vname = value
例項
package main
import
"fmt"
func
main()
// steve
在變數初始化的時候可以省略變數的型別由系統自動推斷,這使得宣告語句裡的var關鍵字有些多餘,因而可以使用:=
來隱式指定這是乙個變數宣告。
使用a := 1
這種型別的宣告時,a的型別將由編譯器自動推斷,但是這種型別的宣告只能用於函式體內部,而不能用於全域性變數的宣告或賦值。
使用:=
(數學意義為定義為)操作符可以高效地建立乙個新的變數,這被稱作初始化宣告。
常量與變數的定義相對應,它也表示抽象化的值概念,但它指向的數值一經定義後就不能再被修改。
go語言中常量的資料型別只能是布林型、數字型(整型、浮點型和複數)和字串型別,而不能是其他型別。
常量的定義格式如下:
const cname type
= value
同樣可以省略型別說明符,因為編譯器可以自行推斷。
const b string
="abc"
const b =
"abc"
go語言沒有列舉型別,可以使用常量來實現列舉:
const
( low =
0 mid =
1 high =
2)
常量可以用len()
(元素個數),cap()
(陣列切片分配的空間大小),unsafe.sizeof()
(常量佔據的空間大小,以byte為單位)函式計算常量的相關資訊。但常量表示式中的函式必須是內建函式,否則編譯報錯。
例項:
package main
import
"unsafe"
const
( name =
"steve"
length =
len(name)
size = unsafe.
sizeof
(name)
)func
main()
// steve 5 16
iotaiota英文原意微量; 極少量。注意不是itoa,itoa指的是整型轉字串。
iota
是go
語言所引入的乙個特殊常量,它特殊之處在於它的值可以被編譯器修改。(iota本身代表乙個常量,而不是變數,參見下面的任何乙個例子)
iota
在const
關鍵字出現時將被重置為0,而後在const中每新增一行賦值為iota的常量宣告將使iota
計數一次。
iota
可用於遞增列舉
const
( a =
iota
// 0
b =iota
// 1
c =iota
// 2
)
可以簡寫為
const
( a =
iota
b c)
例項:
package main
import
("fmt"
)func
main()
012steve
steve
steve
1010109
1011
該例說明,即使常量不是宣告為iota
,iota
的值也會自增。
下面再看乙個例項
package main
import
"fmt"
const
( i=
1<<
iota
// 1 << 0 = 1
j=1<<
iota
// 1 << 1 = 2
k // 1 << 2 = 4
l // 1 << 3 = 8
m =2<<
iota
// 2 << 4 = 32
n // 2 << 5 = 64
o // 2 << 6 = 128
)func
main()
// i= 1
// j= 2
// k= 4
// l= 8
// m= 32
// n= 64
// o= 128
該例說明,iota
在為常量賦值時,它只會自增;而省略了運算子的寫法時,常量會按照相同運算子執行,但作為運算元的iota
已自增1。 go語言 變數與常量
變數名首字母大寫,可以被其他包訪問呼叫 公有 變數名首字母小寫,其他包不能訪問和呼叫 私有 在同乙個域裡乙個變數只能定義一次,不可重複定義 1 先宣告後賦值 關鍵字 變數名 變數型別 var a int 變數名 值 a 10 賦值需要在函式體裡 2 宣告並賦值 關鍵字 變數名 變數型別 值 var ...
go 變數大寫 go語言 變數與常量
變數 一 變數注意事項 變數名首字母大寫,可以被其他包訪問呼叫 公有 變數名首字母小寫,其他包不能訪問和呼叫 私有 在同乙個域裡乙個變數只能定義一次,不可重複定義 二 變數的宣告的種方式 1 先宣告後賦值 關鍵字 變數名 變數型別 var a int 變數名 值 a 10 賦值需要在函式體裡 2 宣...
go常量與變數
常量使用關鍵字const,常量的資料型別只能是數字型 整數,浮點和複數 字串型和布林型。格式 const name type value 比如 const a 1 複製 在go語言中,可以省略型別,因為編譯器可以根據常量的值來推斷型別。常量在賦值時,可以使用運算子,比如 const b 1 2 複製...