<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>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                # Go 閉包函數 Go支持匿名函數,匿名函數可以形成閉包。閉包函數可以訪問定義閉包的函數定義的內部變量。 示例1: ```go package main import "fmt" // 這個"intSeq"函數返回另外一個在intSeq內部定義的匿名函數, // 這個返回的匿名函數包住了變量i,從而形成了一個閉包 func intSeq() func() int { i := 0 return func() int { i += 1 return i } } func main() { // 我們調用intSeq函數,并且把結果賦值給一個函數nextInt, // 這個nextInt函數擁有自己的i變量,這個變量每次調用都被更新。 // 這里i的初始值是由intSeq調用的時候決定的。 nextInt := intSeq() // 調用幾次nextInt,看看閉包的效果 fmt.Println(nextInt()) fmt.Println(nextInt()) fmt.Println(nextInt()) // 為了確認閉包的狀態是獨立于intSeq函數的,再創建一個。 newInts := intSeq() fmt.Println(newInts()) } ``` 輸出結果為 ``` 1 2 3 1 ``` 示例2: ```go package main import "fmt" func main() { add10 := closure(10)//其實是構造了一個加10函數 fmt.Println(add10(5)) fmt.Println(add10(6)) add20 := closure(20) fmt.Println(add20(5)) } func closure(x int) func(y int) int { return func(y int) int { return x + y } } ``` 輸出結果為: ``` 15 16 25 ``` 示例3: ```go package main import "fmt" func main() { var fs []func() int for i := 0; i < 3; i++ { fs = append(fs, func() int { return i }) } for _, f := range fs { fmt.Printf("%p = %v\n", f, f()) } } ``` 輸出結果: ``` 0x401200 = 3 0x401200 = 3 0x401200 = 3 ``` 示例4: ```go package main import "fmt" func adder() func(int) int { sum := 0 return func(x int) int { sum += x return sum } } func main() { result := adder() for i := 0; i < 10; i++ { fmt.Println(result(i)) } } ``` 輸出結果為: ``` 0 1 3 6 10 15 21 28 36 45 ```
                  <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>

                              哎呀哎呀视频在线观看