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

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                ## 可變參數類型 可變參數是指函數傳入的參數個數是可變的,為了做到這點,首先需要將函數定義為可以接受可變參數的類型: ~~~ func myfunc(args ...int) { for _, arg := range args { fmt.Println(arg) } } ~~~ ## 任意類型的可變參數 之前的例子中將可變參數類型約束為 int,如果你希望傳任意類型,可以指定類型為 interface{},下面是Go語言標準庫中 fmt.Printf() 的函數原型: ~~~ func Printf(format string, args ...interface{}) { // ... } ~~~ ## 遍歷可變參數列表——獲取每一個參數的值 可變參數列表的數量不固定,傳入的參數是一個切片,如果需要獲得每一個參數的具體值時,可以對可變參數變量進行遍歷,參見下面代碼: ~~~ package main import ( "bytes" "fmt" ) // 定義一個函數, 參數數量為0~n, 類型約束為字符串 func joinStrings(slist ...string) string { // 定義一個字節緩沖, 快速地連接字符串 var b bytes.Buffer // 遍歷可變參數列表slist, 類型為[]string for _, s := range slist { // 將遍歷出的字符串連續寫入字節數組 b.WriteString(s) } // 將連接好的字節數組轉換為字符串并輸出 return b.String() } func main() { // 輸入3個字符串, 將它們連成一個字符串 fmt.Println(joinStrings("pig ", "and", " rat")) fmt.Println(joinStrings("hammer", " mom", " and", " hawk")) } ~~~ ## 獲得可變參數類型——獲得每一個參數的類型 當可變參數為 interface{} 類型時,可以傳入任何類型的值,此時,如果需要獲得變量的類型,可以通過 switch 獲得變量的類型,下面的代碼演示將一系列不同類型的值傳入 printTypeValue() 函數,該函數將分別為不同的參數打印它們的值和類型的詳細描述。 打印類型及值: ~~~ package main import ( "bytes" "fmt" ) func printTypeValue(slist ...interface{}) string { // 字節緩沖作為快速字符串連接 var b bytes.Buffer // 遍歷參數 for _, s := range slist { // 將interface{}類型格式化為字符串 str := fmt.Sprintf("%v", s) // 類型的字符串描述 var typeString string // 對s進行類型斷言 switch s.(type) { case bool: // 當s為布爾類型時 typeString = "bool" case string: // 當s為字符串類型時 typeString = "string" case int: // 當s為整型類型時 typeString = "int" } // 寫字符串前綴 b.WriteString("value: ") // 寫入值 b.WriteString(str) // 寫類型前綴 b.WriteString(" type: ") // 寫類型字符串 b.WriteString(typeString) // 寫入換行符 b.WriteString("\n") } return b.String() } func main() { // 將不同類型的變量通過printTypeValue()打印出來 fmt.Println(printTypeValue(100, "str", true)) } ~~~ ## 在多個可變參數函數中傳遞參數 可變參數變量是一個包含所有參數的切片,如果要將這個含有可變參數的變量傳遞給下一個可變參數函數,可以在傳遞時給可變參數變量后面添加`...`,這樣就可以將切片中的元素進行傳遞,而不是傳遞可變參數變量本身。 下面的例子模擬 print() 函數及實際調用的 rawPrint() 函數,兩個函數都擁有可變參數,需要將參數從 print 傳遞到 rawPrint 中。 可變參數傳遞: ~~~ package main import "fmt" // 實際打印的函數 func rawPrint(rawList ...interface{}) { // 遍歷可變參數切片 for _, a := range rawList { // 打印參數 fmt.Println(a) } } // 打印函數封裝 func print(slist ...interface{}) { // 將slist可變參數切片完整傳遞給下一個函數 rawPrint(slist...) } func main() { print(1, 2, 3) } ~~~
                  <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>

                              哎呀哎呀视频在线观看