3 回答

TA貢獻(xiàn)1875條經(jīng)驗(yàn) 獲得超3個(gè)贊
這些不是您認(rèn)為的枚舉。TypePhilosopher或多或少是 int 的別名?;蚨嗷蛏伲?yàn)樗且粋€(gè)根本不同的類(lèi)型,它可以定義自己的方法。
它的重點(diǎn)是以程序員清楚的方式提供常量的語(yǔ)義分組。此外,您可以在編譯時(shí)獲得 Go 類(lèi)型檢查器的好處。但只是到了傳遞給 a 的值func(Philosopher)不能被隱式解釋的程度。將文字5作為參數(shù)傳遞有效,因?yàn)橄?Go 中那樣的常量本質(zhì)上是無(wú)類(lèi)型的。這行不通;
n := 5
Quote(n) // Compile error -> int is not Philosopher
原因被n定義為int。typeint和之間不存在隱式轉(zhuǎn)換Philosopher。但是,這將起作用:
n := 5
Quote(Philosopher(n))
因?yàn)轭?lèi)型轉(zhuǎn)換是有效的。Go 不關(guān)心是否5是一個(gè)有效的和預(yù)定義的Philosopher常量。

TA貢獻(xiàn)1856條經(jīng)驗(yàn) 獲得超5個(gè)贊
除了 int 隱含的值外,Go 不對(duì)有效值做出任何保證。使用iota只是為了方便定義一系列常量;它沒(méi)有說(shuō)明有效值。
5 是一個(gè)有效的整數(shù),因此是一個(gè)有效的哲學(xué)家。您還可以創(chuàng)建 const Plato = Philosopher(5)。
- 3 回答
- 0 關(guān)注
- 283 瀏覽
添加回答
舉報(bào)