鍵入與未鍵入的常量
Go 中的常量可以是鍵入的或非型別的。例如,給定以下字串文字:
"bar"
有人可能會說文字的型別是 string
,但是,這在語義上並不正確。相反,文字是 Untyped 字串常量。它是一個字串(更準確地說,它的預設型別是 string
),但它不是 Go 值,因此在鍵入的上下文中分配或使用它之前沒有型別。這是一個微妙的區別,但是一個有用的理解。
同樣,如果我們將文字分配給常量:
const foo = "bar"
它保持無型別,因為預設情況下,常量是無型別的。也可以將它宣告為型別化的字串常量 :
const typedFoo string = "bar"
當我們嘗試在具有型別的上下文中分配這些常量時,差異就會發揮作用。例如,請考慮以下事項:
var s string
s = foo // This works just fine
s = typedFoo // As does this
type MyString string
var mys MyString
mys = foo // This works just fine
mys = typedFoo // cannot use typedFoo (type string) as type MyString in assignment