第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

golang 中原始值的 typedef 是否等效?

golang 中原始值的 typedef 是否等效?

Go
三國(guó)紛爭(zhēng) 2021-07-29 15:16:10
鑒于此代碼:type Philosopher intconst (    Epictetus Philosopher = iota    Seneca)func Quote(who Philosopher) string {    fmt.Println("t: ", reflect.TypeOf(who))    switch who {    case Epictetus:        return "First say to yourself what you would be;                 and do what you have to do"    case Seneca:        return "If a man knows not to which port he sails,                 No wind is favorable"    }    return "nothing"}調(diào)用Quote(5)將打印Foo.Philosopher為 5 的類(lèi)型。為什么類(lèi)型檢查器沒(méi)有抱怨,因?yàn)檫@是類(lèi)型安全枚舉應(yīng)該做的事情,即限制值的范圍?
查看完整描述

3 回答

?
翻過(guò)高山走不出你

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常量。


查看完整回答
反對(duì) 回復(fù) 2021-08-02
?
BIG陽(yáng)

TA貢獻(xiàn)1859條經(jīng)驗(yàn) 獲得超6個(gè)贊

較短的答案應(yīng)該是

無(wú)類(lèi)型常量采用其上下文所需的類(lèi)型。


查看完整回答
反對(duì) 回復(fù) 2021-08-02
?
RISEBY

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)。


查看完整回答
反對(duì) 回復(fù) 2021-08-02
  • 3 回答
  • 0 關(guān)注
  • 283 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)