go語言學習-函數

來源:互聯網
上載者:User

標籤:ret   聲明   括弧   post   param   有用   匿名   函數的參數   add   

函式宣告

函式宣告包括函數名,形參列表,傳回值列表(可選),函數體組成

func test(parameters) (returns) {    // ...}

其中 parameters 就是函數的形參列表,描述了函數的參數名和參數類型,可以沒有參數但是這個括弧不可以省略; returns就是傳回值列表,描述了函數傳回值的變數名(可選)和類型, 如果函數返回一個沒有名字的參數或者沒有傳回值,就可以不要括弧

這裡的參數和傳回值的類型都不能省略,不過可以簡寫(如果有的話)

例如:

func add(x int, y int) int {    return x + y;}// 可以簡寫成func add(x, y int) int {    return x + y;}

這裡需要注意的是函數調用都必須按照聲明順序為所有的參數提供實參.並且Go語言的函數沒有預設值,也不能通過參數名指定形參,因此形參和傳回值的變數名對於函數調用者是沒有用處的,只是在函數內部使用

參數的傳遞方式

如果實參是參考型別,如指標,slice,map,function,channel等類型,在函數內部進行修改,就會影響到傳入的實參;

其他類型的實參是傳遞的是值的拷貝,對其修改不會影響函數外部。

變長參數
文法:func test(x int, ns ...int) {    //...}

就是在參數類型前面加上三個點 “…”,這裡需要注意的地方是這個變參本質上是一個slice,可在函數內部直接存取,並且一個函數只能有一個變長參數,並且只能在最後的位置

例如:

func add(x int, nums ...int) int {    for i := range nums {        x += nums[i]    }    return x}

上面就是實現n個數的加法

同時在調用變參函數是,也可以將slice作為實參,不過需要展開,就是在slice後面加 “…”

調用方式:

add(10, 20, 30)  // 60// 也可以使用slices := []int{10, 20, 40}add(10, ...s)  // 80
多傳回值

Go語言的函數支援多個傳回值

func test() (int, int) {    return 1, 2}

此時就返回兩個值,就需要有兩個變數來接收,也可以使用 _ 接收來忽略某個參數

同時我們還可以為傳回值起個名字

func test() (x int, y, int) {    x = 10    y = 10    return}

此時就可以使用return 隱式的返回參數了,會自動返回對應名字的參數,注意這裡的傳回值的名字不會影響函數外部.

匿名函數

go也支援匿名函數,可以直接賦值給變數,或者當做結構體的欄位等

var add = func(x, y int) {    return x + y;}// 然後就可以使用變數名調用add(10, 20)  // 30
函數的特點總結
  • 函式宣告包括函數名,形參列表,傳回值列表(可選),函數體組成
  • 不支援參數預設值
  • 如果實參是參考型別,如指標,slice,map,function,channel等類型,進行修改,就回影響實參;
  • 其他類型的實參是傳遞的是值的拷貝,對其修改不會影響函數外部
  • 支援變長參數
  • 支援多傳回值

go語言學習-函數

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.