在圍棋編程語言規范說:常量可以是有類型的或無類型的我對自己的理解有點懷疑??紤]規范中的這個例子: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 回答
- 0 關注
- 295 瀏覽
添加回答
舉報
0/150
提交
取消