初學 Golang 30 天 - (10)函式

1. 函式

範例程式碼

package main

import "fmt"

func add(x int, y int) int {
    return x + y
}

func main() {
    fmt.Println(add(42, 13))
}

函數可以沒有參數或接受多個參數。
在這個例子中," add " 接受兩個 int 類型的參數。
注意類型在變數之後。
return 代表傳回的數值為何,這裡表示傳回 x + y 也就是 42+13 ,所以結果會是 55。
詳細的語法定義可以參考官方文件。
當兩個或多個連續的函數命名參數是同一類型,則除了最後一個類型之外,其他都可以省略。
舉例來說

x int, y int

可以被縮寫為

x, y int

也就是說上面的範例程式碼可以改成

package main

import "fmt"

func add(x, y int) int {
    return x + y
}

func main() {
    fmt.Println(add(42, 13))
}

兩種方法的輸出結果都會是相同的。

輸出結果

55

2. 多數值的返回

函數可以返回任意數量的返回值。
這個函數返回了兩個字串。

範例程式碼

package main

import "fmt"

func swap(x, y string) (string, string) {
    return y, x
}

func main() {
    a, b := swap("hello", "world")
    fmt.Println(a, b)
}

輸出結果

world hello

3. 命名返回值

在 Go 中,函數可以返回多個「結果參數」,而不僅僅是一個值。它們可以像變數那樣命名和使用。
如果命名了返回值參數,一個沒有參數的 return 語句,會將當前的值作為返回值返回。
以這個程式碼為例,sum int 表示宣告整數 sum ,將參數 17 放入 sum 中,x, y int 宣告整數 x,y 在下面使用,由於 return 沒有設定返回值,這邊程式就將 x,y 都回傳了,所以結果會出現 7 10。

範例程式碼

package main

import "fmt"

func split(sum int) (x, y int) {
    x = sum * 4 / 9
    y = sum - x
    return
}

func main() {
    fmt.Println(split(17))
}

輸出結果

7 10

comments powered by Disqus