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

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                如果函數的最后一個參數是采用?`...type`?的形式,那么這個函數就可以處理一個變長的參數,這個長度可以為 0,這樣的函數稱為變參函數。 ~~~ func myFunc(a, b, arg ...int) {} ~~~ 這個函數接受一個類似某個類型的 slice 的參數(詳見第 7 章),該參數可以通過第 5.4.4 節中提到的 for 循環結構迭代。 示例函數和調用: ~~~ func Greeting(prefix string, who ...string) Greeting("hello:", "Joe", "Anna", "Eileen") ~~~ 在 Greeting 函數中,變量?`who`?的值為?`[]string{"Joe", "Anna", "Eileen"}`。 如果參數被存儲在一個數組?`arr`?中,則可以通過?`arr...`?的形式來傳遞參數調用變參函數。 示例 6.7?[varnumpar.go](https://github.com/Unknwon/the-way-to-go_ZH_CN/blob/master/eBook/examples/chapter_6/varnumpar.go) ~~~ package main import "fmt" func main() { x := Min(1, 3, 2, 0) fmt.Printf("The minimum is: %d\n", x) arr := []int{7,9,3,5,1} x = Min(arr...) fmt.Printf("The minimum in the array arr is: %d", x) } func Min(a ...int) int { if len(a)==0 { return 0 } min := a[0] for _, v := range a { if v < min { min = v } } return min } ~~~ 輸出: ~~~ The minimum is: 0 The minimum in the array arr is: 1 ~~~ **練習 6.3**?varargs.go 寫一個函數,該函數接受一個變長參數并對每個元素進行換行打印。 一個接受變長參數的函數可以將這個參數作為其它函數的參數進行傳遞: ~~~ function F1(s … string) { F2(s …) F3(s) } func F2(s … string) { } func F3(s []string) { } ~~~ 變長參數可以作為對應類型的 slice 進行二次傳遞。 但是如果變長參數的類型并不是都相同的呢?使用 5 個參數來進行傳遞并不是很明智的選擇,有 2 種方案可以解決這個問題: 1. 使用結構(詳見第 10 章): 定義一個結構類型,假設它叫?`Options`,用以存儲所有可能的參數: ~~~ type Options struct { par1 type1, par2 type2, ... } ~~~ 函數 F1 可以使用正常的參數 a 和 b,以及一個沒有任何初始化的 Options 結構:?`F1(a, b, Options {})`。如果需要對選項進行初始化,則可以使用?`F1(a, b, Options {par1:val1, par2:val2})`。 2. 使用空接口: 如果一個變長參數的類型沒有被指定,則可以使用默認的空接口?`interface{}`,這樣就可以接受任何類型的參數(詳見第 11.9 節)。該方案不僅可以用于長度未知的參數,還可以用于任何不確定類型的參數。一般而言我們會使用一個 for-range 循環以及 switch 結構對每個參數的類型進行判斷: ~~~ func typecheck(..,..,values … interface{}) { for _, value := range values { switch v := value.(type) { case int: … case float: … case string: … case bool: … default: … } } } ~~~
                  <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>

                              哎呀哎呀视频在线观看