<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智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                > 本章主要介紹函數的定義及用法,函數支持(0至多)個參數,也支持(0至多)個返回值 [TOC] ## 基本函數定義 > 語法 ~~~ func 函數名(參數列表) (返回值類型列表) { } ~~~ > 例子 ~~~ package main import "fmt" // 定義add函數,接受兩個int參數,返回值是int類型 func add(x int, y int) int { return x + y } func main() { fmt.Println(add(42, 13)) } ~~~ ## 返回多個值的函數 > go語言的函數允許返回多個值 ~~~ package main import "fmt" // 定義swap函數,接受x,y兩個參數,swap函數的作用是交換兩個參數值 // 返回兩個string類型的值 func swap(x, y string) (string, string) { // 返回多個值,用逗號分隔 return y, x } func main() { // 調用swap函數,并且接受兩個返回值,按順序傳遞給a和b變量 a, b := swap("hello", "world") fmt.Println(a, b) } ~~~ ## 返回命名參數值 > 我們可以給函數返回值定義命名參數。 ~~~ package main import "fmt" // 定義split函數 // 定義x,y兩個int類型的返回值參數 func split(sum int) (x, y int) { // 給x返回值參數賦值 x = sum - 3 // 給y返回值參數賦值 y = sum - x // 直接return,就可以返回x,y參數值 return } func main() { fmt.Println(split(17)) } ~~~ ## 可變參數 > 如果一個函數的參數,類型一致,但個數不定,可以使用函數的可變參數 > 語法 ~~~ func 函數名(參數名 ...類型) [(返回值列表)] { //函數體 } ~~~ > 示例 ~~~ package main import ( "fmt" ) func main() { test("a", "b", "c") } func test(scores ...string) { for _, value := range scores { fmt.Println(value) } } ~~~ ## 忽略參數返回值 > 函數可以返回多個值,有時候我們只想要其中一個值,可以通過 _ 下劃線符號,忽略返回值。 > 接上面的例子 ~~~ // 忽略掉第一個返回值 _, y := split(17) // 忽略第二個返回值 x, _ := split(17) ~~~ ## defer語句 > defer是延遲調用語句,延遲調用指的是被defer修飾的函數調用,在父函數執行接結束的時候才會執行defer修飾的函數。 ### 基本用法 > 輸出:333 => 222 => 111 ~~~ package main import "fmt" func main() {// 父函數 f := func() {// 父函數 (閉包) defer fmt.Println("111") fmt.Println("222") } // 通過變量f調用閉包函數 defer f() fmt.Println("333") } ~~~ ### defer調用棧 > 如果在同一個函數中,存在多個defer修飾的延遲調用函數,那么執行順序是怎么樣的? ~~~ package main import "fmt" func main() { fmt.Println("counting") for i := 0; i < 10; i++ { // 延遲打印 i defer fmt.Println(i) } // 會比上面的defer語句先執行 fmt.Println("done") } ~~~ > 執行后輸出: ~~~ counting done 9 8 7 6 5 4 3 2 1 0 ~~~
                  <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>

                              哎呀哎呀视频在线观看