Golang學(xué)習(xí)筆記-1.6 函數(shù)

本文系第六篇Golang語(yǔ)言學(xué)習(xí)教程

聲明函數(shù)

語(yǔ)法

func name(parametername type) returntype {
    //函數(shù)體(具體實(shí)現(xiàn)的功能)
}

函數(shù)聲明包括:
函數(shù)名name:自定義的函數(shù)名
形式參數(shù)列表():()中定義,描述了函數(shù)的參數(shù)名以及參數(shù)類型
返回值列表rerurntype:描述了函數(shù)返回值的變量以及類型
函數(shù)體{}:具體實(shí)現(xiàn)功能的代碼

函數(shù)聲明釋義
函數(shù)的聲明以關(guān)鍵詞func開始,后面緊跟自己定義的函數(shù)名name(函數(shù)名),
函數(shù)的參數(shù)列表定義在()之間,
返回值的類型定義在returntype(返回值列表)處,
包含在{}之間的就是函數(shù)體。
注:聲明一個(gè)參數(shù)的語(yǔ)法為參數(shù)名 參數(shù)類型,聲明多個(gè)參數(shù)采用(參數(shù)名 參數(shù)類型, 參數(shù)名 參數(shù)類型)的形式。

函數(shù)中參數(shù)列表和返回值并非必須的,是可以省略的。
例:以下函數(shù)聲明也是有效的

func testfunc(){
    //此函數(shù)不需要輸入?yún)?shù),且沒有返回值
}

示例函數(shù)

//平分糖果的函數(shù),輸入?yún)?shù)是總共的糖果數(shù)量和人的數(shù)量,兩者的商為每人分的數(shù)量,作為返回值
func Candy(total int, people int) int {  //參數(shù)類型相同時(shí)可寫成(total, people int)
    var avg = total / people  //平均值 = 總數(shù)  /  人數(shù)
    return avg  //返回平均值
}

上述有兩個(gè)整型的輸入,totalpeople,返回值為avg,也是整數(shù)類型。
現(xiàn)在已經(jīng)定義了一個(gè)函數(shù),需要在程序中調(diào)用這個(gè)函數(shù)。調(diào)用函數(shù)的語(yǔ)法為:name(parametername),如下:

Candy(20, 5)

完成了函數(shù)的聲明與調(diào)用后,就可以寫出一個(gè)完整的程序,將每個(gè)人分到的糖果輸出:

package main

import "fmt"

//平分糖果的函數(shù),輸入?yún)?shù)是總共的糖果數(shù)量和人的數(shù)量,兩者的商為每人分的數(shù)量,作為返回值
func Candy(total int, people int) int {  //參數(shù)類型相同時(shí)可寫成(total, people int)
    var avg = total / people
    return avg
}

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

以上程序運(yùn)行結(jié)果為:

Everyone can get 4

多返回值

Go語(yǔ)言支持一個(gè)函數(shù)有多個(gè)返回值。
例:

package main

import (  
    "fmt"
)

//求長(zhǎng)方形周長(zhǎng)和面積的函數(shù),輸出參數(shù)是長(zhǎng)和寬,周長(zhǎng)是長(zhǎng)和寬之和的兩倍,面積是長(zhǎng)和寬的乘積
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)
}

如果一個(gè)函數(shù)有多個(gè)返回值,必須用()括起來,以上程序中兩個(gè)返回值分別為perimeterarea
以上程序運(yùn)行結(jié)果為:

the perimeter is 50 and the area is 100

若只想調(diào)用一個(gè)返回值,則將另一返回值用_代替:
perimeter, _ := rectangle(20, 5)

命名返回值

從函數(shù)中可以命名一個(gè)返回值,一旦命名了返回值,可以認(rèn)為這些值在函數(shù)的第一行就被聲明變量,在函數(shù)體中不需要聲明。
上面的rectangle函數(shù)可以寫成:

func rectangle(length,width int)(perimeter, area int) { //在第一行中命名返回值,聲明變量
    perimeter= (length + width) * 2
    area= length * width
    return  //不需要指定返回值,默認(rèn)返回 perimeter, area
}

仔細(xì)對(duì)比上面兩種寫法發(fā)現(xiàn),命名返回值在 rerurntype 返回值列表段聲明了返回值,在函數(shù)體中不需要聲明變量,直接等于值即可。

以上為學(xué)習(xí)Golang函數(shù)篇

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容