<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之旅 廣告
                ## 數據類型和接口轉換 Go在數據之間的轉換中通常非常靈活。 類型可以"繼承"另一種類型: ``` type A int ``` 并且總是可以回轉到我們"繼承"的類型: ``` var a A = 1 fmt.Println(int(a)) ``` 可以使用fmt.Sprint和strconv進行轉換,也可以在字符串和其他類型之間使用反射的接口轉換數字。這里將探討一些基本轉換。 ### 實踐 1. 創建 dataconv.go: ``` package dataconv import "fmt" // ShowConv演示了一些類型轉換 func ShowConv() { // int var a = 24 // float 64 var b = 2.0 // 將int轉換為float64以進行計算 c := float64(a) * b fmt.Println(c) // fmt.Sprintf是生成字符串的好方式 precision := fmt.Sprintf("%.2f", b) // 輸出值和對應類型 fmt.Printf("%s - %T\n", precision, precision) } ``` 2. 創建strconv.go: ``` package dataconv import ( "fmt" "strconv" ) // Strconv 展示了字符串轉換為基本類型 func Strconv() error { s := "1234" //指定10進制 精度64位 res, err := strconv.ParseInt(s, 10, 64) if err != nil { return err } fmt.Println(res) // 讓我們試一下二進制 res, err = strconv.ParseInt("FF", 16, 64) if err != nil { return err } fmt.Println(res) // 轉換字符串為布爾 val, err := strconv.ParseBool("true") if err != nil { return err } fmt.Println(val) return nil } ``` 3. 創建interfaces.go: ``` package dataconv import "fmt" // CheckType 演示了類型斷言 func CheckType(s interface{}) { switch s.(type) { case string: fmt.Println("It's a string!") case int: fmt.Println("It's an int!") default: fmt.Println("not sure what it is...") } } // Interfaces 演示了如何獲得斷言操作結果 func Interfaces() { CheckType("test") CheckType(1) CheckType(false) var i interface{} i = "test" // manually check an interface if val, ok := i.(string); ok { fmt.Println("val is", val) } // this one should fail if _, ok := i.(int); !ok { fmt.Println("uh oh! glad we handled this") } } ``` 4. 創建main.go: ``` package main import "github.com/agtorre/go-cookbook/chapter3/dataconv" func main() { dataconv.ShowConv() if err := dataconv.Strconv(); err != nil { panic(err) } dataconv.Interfaces() } ``` 5. 這會輸出: ``` 48 2.00 - string 1234 255 true It's a string! It's an int! not sure what it is... val is test uh oh! glad we handled this ``` ### 說明 本節通過使用strconv包演示類型之間的轉換。這些方法允許Go開發者在各種抽象Go類型之間快速轉換。strconv包的操作會在編譯期間顯示錯誤,但類型斷言不能。如果錯誤地使用到不受支持的類型,則會引起恐慌。在不確定類型的情況下使用switch是一種不錯的方式,fmt包就是這么干的。 轉換對于諸如math之類的包非常重要,這些包僅支持在float64上運行。 * * * * 學識淺薄,錯誤在所難免。歡迎在群中就本書提出修改意見,以饗后來者,長風拜謝。 Golang中國(211938256) beego實戰(258969317) Go實踐(386056972)
                  <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>

                              哎呀哎呀视频在线观看