无类型常量是什么意思?

在围棋编程语言规范说:


常量可以是有类型的或无类型的


我对自己的理解有点怀疑。考虑规范中的这个例子:


const l = "hi"             // l == "hi"  (untyped string constant)

const m = string(k)        // m == "x"   (type string)

规范说:


常量可以通过常量声明或转换显式指定类型,或者在变量声明或赋值中隐式使用时或作为表达式中的操作数时


通过这个语句,为什么不l输入,因为它显然是一个常量声明?


这种行为在另一个例子中更清楚


type Foo string

func f(a Foo) {}


func main() {

  f("sarkozy")


  const t = "julie gayet"

  f(t)


  s := "hollande"


  //compile error

  // f(s)


  f(Foo(s)) // ok

}

f("sarkozy")编译的原因是由于规范中关于可分配性的声明吗?


x 是一个无类型常量,可以用 T 类型的值表示。


我的论点如下:


“sarkozy”是一个无类型的文字。

因此“sarkozy”可以通过Foo方式表示我可以像这样输入强制 Foo("sarkozy") 

f(s)失败,因为 s 不是untyped。


慕标琳琳
浏览 271回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go