3 回答

TA貢獻(xiàn)1853條經(jīng)驗(yàn) 獲得超18個(gè)贊
這是特殊的語(yǔ)法。除了映射鍵檢查之外,至少類(lèi)型斷言和通道接收具有一元素和二元素版本。在所有這些情況下,第二個(gè)元素在文檔示例中是一個(gè)bool
調(diào)用ok
;對(duì)于類(lèi)型斷言,它表示斷言是否成功,對(duì)于通道接收,它表示通信是否成功(false
如果通道關(guān)閉且為空)。
for...range
有自己的、不同的單元素和雙元素版本,但也許range
更明顯是特別的。
有一個(gè)內(nèi)置函數(shù)列表。如果你真的想知道所有的極端情況,請(qǐng)查看規(guī)范——它很短,沒(méi)有陷入某些標(biāo)準(zhǔn)文檔的各種細(xì)節(jié),一旦你玩過(guò)這種語(yǔ)言就值得花時(shí)間. (Effective Go和FAQ也屬于這一類(lèi)。)

TA貢獻(xiàn)1883條經(jīng)驗(yàn) 獲得超3個(gè)贊
您給出的示例不是方法重載。
第一個(gè)示例:顯示地圖中是否存在鍵。
m := make(map[int]int)
elem, ok := m[1]
elem = m[1]
elem 將從地圖中接收值“1”或“零值”,如果“foo”實(shí)際存在于地圖中,則 ok 將接收一個(gè)將設(shè)置為 true 的布爾值。
官方網(wǎng)站:Go 不支持方法和運(yùn)算符的重載?
如果不需要進(jìn)行類(lèi)型匹配,則方法分派會(huì)得到簡(jiǎn)化。使用其他語(yǔ)言的經(jīng)驗(yàn)告訴我們,擁有多種名稱(chēng)相同但簽名不同的方法有時(shí)很有用,但在實(shí)踐中也可能會(huì)令人困惑和脆弱。僅按名稱(chēng)匹配并要求類(lèi)型的一致性是 Go 類(lèi)型系統(tǒng)中一個(gè)主要的簡(jiǎn)化決定。
Golang 支持可變參數(shù)函數(shù)和方法。這是您可以(或多或少)在 Golang 中進(jìn)行函數(shù)和方法重載的另一種方式。
可變參數(shù)函數(shù)或方法是接受可變數(shù)量參數(shù)的函數(shù)或方法。
示例:
o1 := Overload(1, 2, 3)
o2 := Overload(153, 196883, 1729, 1634, 5, 36)
o3 := Overload(1, -2)
有關(guān)更多詳細(xì)信息,您可以查看這篇文章:Golang 中的函數(shù)和方法重載。
- 3 回答
- 0 關(guān)注
- 170 瀏覽
添加回答
舉報(bào)