<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # 函數知識點小問題 * * * * * --: 作者:Mick 時間:2018年10月25日 * * * * * 1:函數實現 2:什么是高階函數 3:什么是自由變量 4:什么是閉包函數 5:函數簽名定義 ``` package _func import "fmt" type Printer func(contents string)(n int,err error) func printToStd(c string)(int,error){ return fmt.Println(c) } type operate func(x,y int) interface{} // 通過 calculate函數來實現兩個整數間的加減乘除運算,但是希望兩個整數和具體的操作都由該函數的調用方給出 func Run(){ //函數實現 //demo1() //demo2() //demo3 } func demo1(){ var p Printer p = printToStd fmt.Println(p) p("some") } func demo2(){ add := calculateNew(1,2,func(x int,y int)interface{}{ return x+y }) fmt.Println(add) } func demo3(){ x,y := 56,78 add := genCalculate(func(x,y int)interface{}) result,err := add(x,y) fmt.Println(result,err) } func genCalculate(){ } func calculateNew(x,y int,op operate) interface{} { if op == nil { return 0 } return op(x,y) } ``` ``` package main import "fmt" // 函數是一等公民:參數,變量,返回值都可以是函數 // 高階函數 參數與返回值是函數 // 函數-》閉包 func adder() func(int)int{ sum := 0 fmt.Printf("%d\n",&sum) return func(v int) int{ sum += v fmt.Printf("%d\n",&sum) return sum } } // 傳統函數遞歸實現 type iAdder func(int)(int,iAdder) func adder2(base int) iAdder { return func(v int)(int,iAdder){ return base+v,adder2(base+v) } } func oldAdder(v int)int{ sum := 0 for i:=0;i<v;i++{ sum +=i } return sum } func main(){ //a := adder() //a(0) //a(1) b := adder2(0) v1,f1 := b(1) fmt.Println(v1,f1) v2,f2 := f1(2) fmt.Println(v2,f2) //start := time.Now().UnixNano() // 閉包求和 451 158 200 //a := adder() //for i := 0;i < 100000; i++ { //fmt.Println(a(i)) //} //oldAdder效率地下2 654 060 200 //for i := 0;i < 100000; i++ { // fmt.Println(oldAdder(i)) //} //end := time.Now().UnixNano() //fmt.Println(start," - ",end," = ",end-start) } ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看