Golang學習筆記-1.6 函式

weixin_34208283發表於2018-07-10

本文系第六篇Golang語言學習教程

宣告函式

語法

func name(parametername type) returntype {
    //函式體(具體實現的功能)
}

函式宣告包括:
函式名name:自定義的函式名
形式引數列表():()中定義,描述了函式的引數名以及引數型別
返回值列表rerurntype:描述了函式返回值的變數以及型別
函式體{}:具體實現功能的程式碼

函式宣告釋義
函式的宣告以關鍵詞func開始,後面緊跟自己定義的函式名name(函式名)
函式的引數列表定義在()之間,
返回值的型別定義在returntype(返回值列表)處,
包含在{}之間的就是函式體。
注:宣告一個引數的語法為引數名 引數型別,宣告多個引數採用(引數名 引數型別, 引數名 引數型別)的形式。

函式中引數列表和返回值並非必須的,是可以省略的。
例:以下函式宣告也是有效的

func testfunc(){
    //此函式不需要輸入引數,且沒有返回值
}

示例函式

//平分糖果的函式,輸入引數是總共的糖果數量和人的數量,兩者的商為每人分的數量,作為返回值
func Candy(total int, people int) int {  //引數型別相同時可寫成(total, people int)
    var avg = total / people  //平均值 = 總數  /  人數
    return avg  //返回平均值
}

上述有兩個整型的輸入,totalpeople,返回值為avg,也是整數型別。
現在已經定義了一個函式,需要在程式中呼叫這個函式。呼叫函式的語法為:name(parametername),如下:

Candy(20, 5)

完成了函式的宣告與呼叫後,就可以寫出一個完整的程式,將每個人分到的糖果輸出:

package main

import "fmt"

//平分糖果的函式,輸入引數是總共的糖果數量和人的數量,兩者的商為每人分的數量,作為返回值
func Candy(total int, people int) int {  //引數型別相同時可寫成(total, people int)
    var avg = total / people
    return avg
}

func main(){
    avg := Candy(20, 5)
    fmt.Println("Everyone can get", avg)
}

以上程式執行結果為:

Everyone can get 4

多返回值

Go語言支援一個函式有多個返回值。
例:

package main

import (  
    "fmt"
)

//求長方形周長和麵積的函式,輸出引數是長和寬,周長是長和寬之和的兩倍,面積是長和寬的乘積
func rectangle(length,width int)(int, int) {
    var perimeter= (length + width) * 2
    var area= length * width
    return perimeter, area
}

func main (){
    perimeter, area := rectangle(20, 5)
    fmt.Println("the perimeter is", perimeter, "and the area is", area)
}

如果一個函式有多個返回值,必須用()括起來,以上程式中兩個返回值分別為perimeterarea
以上程式執行結果為:

the perimeter is 50 and the area is 100

若只想呼叫一個返回值,則將另一返回值用_代替:
perimeter, _ := rectangle(20, 5)

命名返回值

從函式中可以命名一個返回值,一旦命名了返回值,可以認為這些值在函式的第一行就被宣告變數,在函式體中不需要宣告。
上面的rectangle函式可以寫成:

func rectangle(length,width int)(perimeter, area int) { //在第一行中命名返回值,宣告變數
    perimeter= (length + width) * 2
    area= length * width
    return  //不需要指定返回值,預設返回 perimeter, area
}

仔細對比上面兩種寫法發現,命名返回值在 rerurntype 返回值列表段宣告瞭返回值,在函式體中不需要宣告變數,直接等於值即可。

以上為學習Golang函式篇

相關文章