Go 类型常量与非类型常量

示例

Go中的常数可以输入或不输入。例如,给定以下字符串文字:

"bar"

可能会说文字的类型是string,但是,这在语义上是不正确的。相反,文字是Untyped字符串常量。它是一个字符串(更正确的说,它的默认类型是string),但是它不是Go值,因此只有在键入的上下文中分配或使用它之前,它才是类型。这是一个微妙的区别,但是一个有用的理解。

同样,如果我们将文字分配给常量:

const foo = "bar"

由于默认情况下常量是无类型的,因此它保持无类型。也可以将其声明为类型化的字符串常量

const typedFoo string = "bar"

当我们尝试在确实具有类型的上下文中分配这些常量时,差异就发挥了作用。例如,考虑以下内容:

var s string

s = foo      // 这很好

s = typedFoo // 像这样

type MyString string

var mys MyString

mys = foo      // 这很好

mys = typedFoo // 不能在分配中使用typedFoo(类型字符串)作为MyString类型

           

以上是 Go 类型常量与非类型常量 的全部内容, 来源链接: utcz.com/z/330714.html

回到顶部