3 回答

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

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 中的函數和方法重載。
- 3 回答
- 0 關注
- 178 瀏覽
添加回答
舉報