golang--6、常量

操作系統(tǒng):centos8;golang版本:1.17.4

關(guān)鍵字 const 被用于表示常量,常量的值會在編譯的時候確定,常量不能再重新賦值為其他的值。

例如,以下代碼會出現(xiàn)一個編譯錯誤:cannot assign to temp (declared const)

package main

import "fmt"

func main() {
    const temp = 1
    temp = 2
}

定義常量有兩種方式:
(1) const temp = 1 ,這種情況下temp是無類型的。
(2) const temp int = 1 ,這種情況下temp是int類型的。

存儲在常量中的數(shù)據(jù)類型只可以是布爾型、數(shù)字型(整數(shù)型、浮點(diǎn)型和復(fù)數(shù))和字符串型。

1、字符串常量

const hello = "hello world"
上面定義的hello常量是沒有類型的。

go是一門強(qiáng)類型語言,所有的變量必須有明確的類型。而無類型的常量有一個與它們相關(guān)聯(lián)的默認(rèn)類型,當(dāng)且僅當(dāng)一行代碼需要時才提供它。

例如,當(dāng)我們把常量hello賦值給變量name時,var name = hello ,使用了hello的默認(rèn)類型string。

2、布爾常量

布爾常量的規(guī)則與字符串常量相同,定義無類型布爾常量時有默認(rèn)類型,也可以定義有類型的布爾常量。

3、數(shù)字常量

數(shù)字常量的規(guī)則有一些不同。例如下面一段代碼:

package main

import (
    "fmt"
)

func main() {
    const a = 5
    var intVar int = a
    var int32Var int32 = a
    var float64Var float64 = a
    var complex64Var complex64 = a
    fmt.Println("intVar", intVar, "\nint32Var", int32Var, "\nfloat64Var", float64Var, "\ncomplex64Var", complex64Var)
}

上面的程序,常量 a 是沒有類型的,它的值是 5 。而每個變量的類型由數(shù)字常量的語法決定。a 的語法是通用的(它可以代表一個浮點(diǎn)數(shù)、整數(shù)甚至是一個沒有虛部的復(fù)數(shù)),因此可以將其分配給任何兼容的類型。這些常量的默認(rèn)類型可以被認(rèn)為是根據(jù)上下文在運(yùn)行中生成的。 var intVar int = a 要求 a 是 int,所以它變成一個 int 常量。 var complex64Var complex64 = a 要求 a 是 complex64,因此它變成一個復(fù)數(shù)類型。

這個程序的運(yùn)行結(jié)果為:

intVar 5 
int32Var 5
float64Var 5
complex64Var (5+0i)

4、數(shù)字表達(dá)式

數(shù)字常量可以在表達(dá)式中自由混合和匹配,只有當(dāng)它們被分配給變量或者在需要類型的代碼中的任何地方使用時,才需要類型。例如:

package main

import (
    "fmt"
)

func main() {
    var a = 6.66 / 8
    fmt.Printf("a's type %T value %v", a, a)
}

在上面的程序中, 6.66 在語法中是浮點(diǎn)型,8 是整型,6.66/8 是允許的,因?yàn)閮蓚€都是數(shù)字常量。除法的結(jié)果是 0.8325 是一個浮點(diǎn)型,所以 a 的類型是浮點(diǎn)型。這個程序的輸出結(jié)果是: a's type float64 value 0.8325 。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容