在围棋编程语言规范说:
常量可以是有类型的或无类型的
我对自己的理解有点怀疑。考虑规范中的这个例子:
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。
相关分类