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

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                函數參數 函數定義時指出,函數定義時有參數,該變量可稱為函數的形參。形參就像定義在函數體內的局部變量。 但當調用函數,傳遞過來的變量就是函數的實參,函數可以通過兩種方式來傳遞參數: 值傳遞:指在調用函數時將實際參數復制一份傳遞到函數中,這樣在函數中如果對參數進行修改,將不會影響到實際參數。 ~~~ func swap(x, y int) int { ... ... } ~~~ 引用傳遞:是指在調用函數時將實際參數的地址傳遞到函數中,那么在函數中對參數所進行的修改,將影響到實際參數。 ~~~ package main import ( "fmt" ) /* 定義相互交換值的函數 */ func swap(x, y *int) { var temp int temp = *x /* 保存 x 的值 */ *x = *y /* 將 y 值賦給 x */ *y = temp /* 將 temp 值賦給 y*/ } func main() { var a, b int = 1, 2 /* 調用 swap() 函數 &a 指向 a 指針,a 變量的地址 &b 指向 b 指針,b 變量的地址 */ swap(&a, &b) fmt.Println(a, b) } ~~~ 輸出結果: ~~~ 2 1 ~~~ 在默認情況下,Go 語言使用的是值傳遞,即在調用過程中不會影響到實際參數。 注意1:無論是值傳遞,還是引用傳遞,傳遞給函數的都是變量的副本,不過,值傳遞是值的拷貝。引用傳遞是地址的拷貝,一般來說,地址拷貝更為高效。而值拷貝取決于拷貝的對象大小,對象越大,則性能越低。 注意2:map、slice、chan、指針、interface默認以引用的方式傳遞。 不定參數傳值 就是函數的參數不是固定的,后面的類型是固定的。(可變參數) Golang 可變參數本質上就是 slice。只能有一個,且必須是最后一個。 在參數賦值時可以不用用一個一個的賦值,可以直接傳遞一個數組或者切片,特別注意的是在參數后加上“…”即可。 ~~~ func myfunc(args ...int) { //0個或多個參數 } func add(a int, args…int) int { //1個或多個參數 } func add(a int, b int, args…int) int { //2個或多個參數 } ~~~ 注意:其中args是一個slice,我們可以通過arg[index]依次訪問所有參數,通過len(arg)來判斷傳遞參數的個數. 任意類型的不定參數: 就是函數的參數和每個參數的類型都不是固定的。 用interface{}傳遞任意類型數據是Go語言的慣例用法,而且interface{}是類型安全的。 ~~~ func myfunc(args ...interface{}) { } ~~~ 代碼: ~~~ package main import ( "fmt" ) func test(s string, n ...int) string { var x int for _, i := range n { x += i } return fmt.Sprintf(s, x) } func main() { println(test("sum: %d", 1, 2, 3)) } ~~~ 輸出結果: ~~~ sum: 6 ~~~ 使用 slice 對象做變參時,必須展開。`(slice...)` ~~~ package main import ( "fmt" ) func test(s string, n ...int) string { var x int for _, i := range n { x += i } return fmt.Sprintf(s, x) } func main() { s := []int{1, 2, 3} res := test("sum: %d", s...) // slice... 展開slice println(res) } ~~~
                  <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>

                              哎呀哎呀视频在线观看