Go語言變數與常量

2021-10-12 08:29:05 字數 3780 閱讀 3677

變數是乙個數學定義,它是乙個符號,表示某乙個事物的取值。在程式語言裡,它表示計算機能表示的抽象值概念或者說是計算結果。變數的體現在它的實際值可能在不斷地變動。

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

iota
iota英文原意微量; 極少量。注意不是itoa,itoa指的是整型轉字串。

iotago語言所引入的乙個特殊常量,它特殊之處在於它的值可以被編譯器修改。(iota本身代表乙個常量,而不是變數,參見下面的任何乙個例子)

iotaconst關鍵字出現時將被重置為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

該例說明,即使常量不是宣告為iotaiota的值也會自增。

下面再看乙個例項

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 複製...