我有在我的理解有點疑問常量可以鍵入或無類型
。在spec 考慮這個例子:
const l = "hi" // l == "hi" (untyped string constant)
const m = string(k) // m == "x" (type string)
該規範表示:在一個變量聲明或使用時
常數可以被給予類型明確地由恆定聲明或 轉換,或隱式 轉讓或作爲表達式
操作數通過這一說法,爲什麼不l
因爲這類型顯然是一個constan t聲明?
此行爲是更清晰與其他example
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的值的類型化表示的恆定
我的參數爲以下:
- 「齊」一個無類型字面。
- 因此,「齊」由
Foo
是表示的是指我可以鍵入強迫這樣Foo("sarkozy")
f(s)
失敗,因爲s不是無類型。
謝謝。這個「變量不能被無類型化」是我理解的關鍵。 – canadadry