亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Golang 多重返回重載是地圖類型獨有的嗎?

Golang 多重返回重載是地圖類型獨有的嗎?

Go
Qyouu 2021-09-27 10:01:26
這些都有效:m := make(map[int]int)elem, ok := m[1]elem = m[1]然而,這是不允許的:func overload() (int, int) {    return 1, 1}func overload() int {    return 1}func main() {    x := overload()    x, y := overload()}另外,是否有不能概括的內置語法列表?我一直對什么是特殊語法(即map[string]int)make([]int, 10)以及什么是語言的一部分感到困惑。
查看完整描述

3 回答

?
慕容森

TA貢獻1853條經驗 獲得超18個贊

這是特殊的語法。除了映射鍵檢查之外,至少類型斷言和通道接收具有一元素和二元素版本。在所有這些情況下,第二個元素在文檔示例中是一個bool調用ok;對于類型斷言,它表示斷言是否成功,對于通道接收,它表示通信是否成功(false如果通道關閉且為空)。

for...range有自己的、不同的單元素和雙元素版本,但也許range更明顯是特別的。

有一個內置函數列表。如果你真的想知道所有的極端情況,請查看規范——它很短,沒有陷入某些標準文檔的各種細節,一旦你玩過這種語言就值得花時間. (Effective Go和FAQ也屬于這一類。)


查看完整回答
反對 回復 2021-09-27
?
白板的微信

TA貢獻1883條經驗 獲得超3個贊

您給出的示例不是方法重載。


第一個示例:顯示地圖中是否存在鍵。


m := make(map[int]int)

elem, ok := m[1]

elem = m[1]

elem 將從地圖中接收值“1”或“零值”,如果“foo”實際存在于地圖中,則 ok 將接收一個將設置為 true 的布爾值。


官方網站:Go 不支持方法和運算符的重載?


如果不需要進行類型匹配,則方法分派會得到簡化。使用其他語言的經驗告訴我們,擁有多種名稱相同但簽名不同的方法有時很有用,但在實踐中也可能會令人困惑和脆弱。僅按名稱匹配并要求類型的一致性是 Go 類型系統中一個主要的簡化決定。


Golang 支持可變參數函數和方法。這是您可以(或多或少)在 Golang 中進行函數和方法重載的另一種方式。


可變參數函數或方法是接受可變數量參數的函數或方法。


示例:


o1 := Overload(1, 2, 3)

o2 := Overload(153, 196883, 1729, 1634, 5, 36)

o3 := Overload(1, -2)

有關更多詳細信息,您可以查看這篇文章:Golang 中的函數和方法重載。


查看完整回答
反對 回復 2021-09-27
  • 3 回答
  • 0 關注
  • 178 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號