Golang學習筆記-1.6 函數

來源:互聯網
上載者:User

本文系第六篇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 mainimport "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 mainimport (      "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 傳回值列表段聲明了傳回值,在函數體中不需要聲明變數,直接等於值即可。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.