phper 的Goland學習之路--- 函數

1. 注意: 

(1)函數名首字母小寫 : 爲private       函數名首字母大寫 :  爲public

2. 函數特點: 

    (1)go 函數不支持嵌套/函數重載/默認參數。

    (2)go 支持 不定長變參 / 多返回值  /  命名返回值參數 / 匿名函數  / 閉包       

    (3)定義函數用func;函數也可以作爲一種數據類型來使用

3.  函數定義: 

    (1)無形參/無返回值:func  funcName(){  }

    (2)   有形參/無返回值  : func  funcName( a  int ,  b  string , c bool){   }

    (3)  有形參  /  有返回值 : func  funcName(a , b ,  d  int)(int , string , int ){    }   // 形參 a , b , d全部是int 類型

            如何接收多個返回值???   變量 1 , 變量2  :=  funcName( );

            如何接收多個返回值中的某些值???   _ , 變量 , _ , 變量   := funcName( );

            _ 下劃線代表 忽略不接受某個返回值

             func   funcName(a int )int   {   }   //  返回值是int類型

 (4) 變參: func  funcName(  a int , b string ,  c  ...int) {  }    // c爲一個數組,變參放到形參列表的後面

    4、回調函數:

                把一個函數當做另一個函數的參數   

    函數原型: funcName( a int ,  callbackFuncName   func(int ,int)  int,  b int )  int {     callbackFuncName(a,b);     }

    使用:  funcName(2 , 函數名 ,23) ; 或者 

                funcName(12 , func(a int ,b int) int{   // 匿名函數 

                            return a+b ;

            } , 34) ;

如何獲取回調函數的函數名???

  p :=  reflect . Valueof(callbackName) . Pointer();  // 獲取回調函數的指針

    runtime . FuncForPC(p) . Name();   //  獲取回調函數的函數名

5、匿名函數:

            沒有函數名的函數,稱之爲匿名函數

    [ a := ]  func(a ,b int) int { // 邏輯   }

       a(12,23);

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章