Go中多個返回值的技巧

周伯通的麥田發表於2018-11-02

直接上程式碼看個例子吧:

package main
import "fmt"

//返回 X+Y 和 X*Y
func Computer(X, Y int) (int, int) {
    return X+Y, X*Y
}

func main() {
    x := 10
    y := 20

    a, b := Computer(x, y)

    fmt.Printf("%d + %d = %d
", x, y, a)
    fmt.Printf("%d * %d = %d
", x, y, b)
}

上面的例子我們可以看到直接返回了兩個引數,當然我們也可以命名返回引數的變數,

這個例子裡面只是用了兩個型別,我們也可以改成如下這樣的定義,然後返回的時候不用帶上變數名,因為直接在函式裡面初始化了:

package main
import "fmt"

//返回 X+Y 和 X*Y
func Computer(X, Y int) (add int, multiplied int) { //這裡命令返回引數的變數add 和 multiplied
    add = X+Y
    multiplied = X*Y
    return
}

func main() {
    x := 10
    y := 20

    a, b := Computer(x, y)

    fmt.Printf("%d + %d = %d
", x, y, a)
    fmt.Printf("%d * %d = %d
", x, y, b)
}

但是:如果你的函式是匯出的(首字母大寫),官方建議:最好命名返回值,因為不命名返回值,雖然使得程式碼更加簡潔了,但是會造成生成的文件可讀性差。

相關文章