鍵入與未鍵入的常量

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