Go 面試題 003:Go 多值返回有什么用?
大家好,我是明哥。
歡迎大家再次來到 『Go 語言面試題庫』 這個專欄
本專欄內(nèi)容,已經(jīng)上傳 github:https://github.com/iswbm/golang-interview
請大家?guī)蛶兔θc(diǎn)個小 ??,在那里我對題庫進(jìn)行了分類整理
第三題

請聽題:
Go 的多值返回有什么?
Go語言中函數(shù)可以返回多個值,這和其它編程語言有很大的不同。對于有其它語言編程經(jīng)驗的人來說,最大的障礙不是學(xué)習(xí)這個特性,而是很難想到去使用這個特性。
利用這個特性,在 Go 中實(shí)現(xiàn)變量的交換,就不需要再使用中間變量(表象上看是這樣,但實(shí)際還是會變量的拷貝)了,非常的方便。
以下是使用示例
package main
import "fmt"
func swap(a int, b int) (int, int) {
return b, a
}
func main() {
a := 1
b := 2
a, b = swap(a, b)
fmt.Println(a) // 2
fmt.Println(b) // 1
}
若返回的值,有的不需要,可以直接使用 占位符 _ 接收,表示丟棄這個值。
a, _ = swap(a, b)
在 Go 中沒有異常機(jī)制,當(dāng)一個函數(shù)運(yùn)行出錯的時候,除了返回該功能函數(shù)的結(jié)果外,還應(yīng)該返回一個 error 類型的值。
若該值為 nil 則表示,函數(shù)正常運(yùn)行結(jié)束,反之,則函數(shù)運(yùn)行異常。
這是 Golang 這門語言的設(shè)計哲學(xué),因此我們不管在看別人的代碼,亦或者自己寫代碼,都會發(fā)現(xiàn)代碼中到處都有下面這段代碼的身影。
if err != nil {
// handle error
}

???
評論
圖片
表情
