在围棋编程语言规范说:常量可以是有类型的或无类型的我对自己的理解有点怀疑。考虑规范中的这个例子:const l = "hi" // l == "hi" (untyped string constant)const m = string(k) // m == "x" (type string)规范说:常量可以通过常量声明或转换显式指定类型,或者在变量声明或赋值中隐式使用时或作为表达式中的操作数时通过这个语句,为什么不l输入,因为它显然是一个常量声明?这种行为在另一个例子中更清楚type Foo stringfunc 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。
1 回答
- 1 回答
- 0 关注
- 270 浏览
添加回答
举报
0/150
提交
取消