golang基礎--func函數

來源:互聯網
上載者:User

函數function

  • Go函數不支援 嵌套, 重載和預設參數
  • 支援以下特性:

    無須聲明原型,不定長度長度變參,多傳回值,命名傳回值參數,匿名函數,閉包

  • 定義函數使用關鍵字func,且左側大括弧不能另起一行

    package mainimport (    "fmt")func main() {    a, b := 1, 2    D(a, b) //傳遞可變長度變數,無法修改slice索引,無法根本改變slice值    s1 := []int{1, 2, 3}    D1(s1) //傳遞slice作為參數,修改索引值可以達到修改原始slice的效果    x := 1    D2(&x) //傳遞x的記憶體位址} //參數傳回值func A(a int, b string) int {    return a}//多個傳回值func B() (a, b, c int) { //沒有參數,    a, b, c = 1, 2, 3 //因為傳回值中已經有a,b,c佔用了內層,所以後面直接賦值    return a, b, c    //可以省略a,b,c}//不定長變參,即int參數可以是多個,傳進來的是個slice類型func C(b string, a ...int) {     fmt.Println(a) //輸出 [1,2,3,4,5]}/不定長參數傳遞,傳入變數func D(s ...int) {     fmt.Println(s)    s[0] = 3    s[1] = 4    fmt.Println(s)}//傳遞slice作為參數,拷貝的是slice的記憶體位址func D1(s []int) {     s[0] = 4    s[1] = 5    fmt.Println(s)}//指標類型傳遞,可以達到修改變數值的目的func D2(a *int) {     *a = 2 //記憶體a的值變為2    fmt.Println(*a)}/*輸出D---->      [1 2]  //slice            [3 4]  //slice             1 2    //intD1---->     [4 5 3]D2---->     2       //參數為指標可以修改變數值*/
  • 函數也可以作為一種類型使用

    package mainimport "fmt"func main() {    a := A //函數作為類型使用    a()}func A() {    fmt.Println("Func A")}//指標類型傳遞,可以達到修改變數值的目的/*輸出a()---->    Func A*/

    函數名可以理解為記憶體位址的編號,可以被用來賦值操作。

  • 匿名函數,不同與python語言有關鍵字lamada,go的匿名函數顯的更直白,沒有函數名,只需要func關鍵字就可以
    簡單構建一個匿名函數,如下

    // 匿名函數package mainimport "fmt"func main() {    a := func() { //沒有函數名,直接進行賦值給變數        fmt.Println("Func A")    }    a() //調用匿名函數}
  • 函數的閉包:又稱嵌套函數,返回的類型是一個函數,再將函數賦值給變數,重新傳入參數執行

    package mainimport "fmt"func main() {    f := closure(10)    fmt.Println(f(3))    fmt.Println(f(4))}func closure(x int) func(int) int { // 函數作為傳回型別    return func(y int) int {        return x + y    }}/*輸出f(3)--->    13f(4)--->    14*/
相關文章

聯繫我們

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