乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      go好用的類(lèi)型轉(zhuǎn)換第三方組件

       小世界的野孩子 2021-05-02

      Cast介紹

      開(kāi)源地址

      https://github.com/spf13/cast

      Cast是什么?

      Cast是一個(gè)庫(kù),以一致和簡(jiǎn)單的方式在不同的go類(lèi)型之間轉(zhuǎn)換。

      Cast提供了簡(jiǎn)單的函數(shù),可以輕松地將數(shù)字轉(zhuǎn)換為字符串,將接口轉(zhuǎn)換為bool類(lèi)型等等。當(dāng)一個(gè)明顯的轉(zhuǎn)換是可能的時(shí),Cast會(huì)智能地執(zhí)行這一操作。它不會(huì)試圖猜測(cè)你的意思,例如,你只能將一個(gè)字符串轉(zhuǎn)換為int的字符串表示形式,例如“8”。Cast是為Hugo開(kāi)發(fā)的,Hugo是一個(gè)使用YAML、TOML或JSON作為元數(shù)據(jù)的網(wǎng)站引擎。

      為什么使用Cast?

      在Go中處理動(dòng)態(tài)數(shù)據(jù)時(shí),通常需要將數(shù)據(jù)從一種類(lèi)型轉(zhuǎn)換為另一種類(lèi)型。強(qiáng)制轉(zhuǎn)換不僅僅是使用類(lèi)型斷言(盡管它在可能的情況下使用類(lèi)型斷言),它提供了一個(gè)非常直接和方便的庫(kù)。

      如果您正在使用接口來(lái)處理諸如動(dòng)態(tài)內(nèi)容之類(lèi)的事情,那么您將需要一種簡(jiǎn)單的方法來(lái)將接口轉(zhuǎn)換為給定類(lèi)型。這是給你的圖書(shū)館。

      如果您從YAML、TOML或JSON或其他缺乏完整類(lèi)型的格式中獲取數(shù)據(jù),那么Cast就是適合您的庫(kù)。

      使用方式

      強(qiáng)制轉(zhuǎn)換提供了一些To_____ 的方法。這些方法將始終返回所需的類(lèi)型。如果提供的輸入不能轉(zhuǎn)換為該類(lèi)型,則返回該類(lèi)型的0或nil值。

      Cast也提供了 To_____E相同的方法。這些方法返回與To_____方法相同的結(jié)果,外加一個(gè)額外的錯(cuò)誤,告訴您是否成功轉(zhuǎn)換。使用這些方法,您可以分辨輸入匹配零值時(shí)的不同,以及轉(zhuǎn)換失敗時(shí)返回零值時(shí)的不同。

      案例

      下面的例子僅僅是現(xiàn)有例子的一個(gè)例子。請(qǐng)查看完整的代碼集。

      Example 'ToString’:

      cast.ToString("mayonegg")         // "mayonegg"
      cast.ToString(8)                  // "8"
      cast.ToString(8.31)               // "8.31"
      cast.ToString([]byte("one time")) // "one time"
      cast.ToString(nil)                // ""
      
      var foo interface{} = "one more time"
      cast.ToString(foo)                // "one more time"
      

      Example 'ToInt’:

      cast.ToInt(8)                  // 8
      cast.ToInt(8.31)               // 8
      cast.ToInt("8")                // 8
      cast.ToInt(true)               // 1
      cast.ToInt(false)              // 0
      
      var eight interface{} = 8
      cast.ToInt(eight)              // 8
      cast.ToInt(nil)                // 0
      

      main函數(shù)

      package main
      
      import (
      "fmt"
      "reflect"
      
      "github.com/spf13/cast"
      )
      
      func main() {
      var foo interface{} = "one more time"
      box := cast.ToString(foo)
      fmt.Println(box)
      box = cast.ToString("3.12021")
      fmt.Println(box)
      
      cvIntBox := cast.ToInt(8)
      fmt.Println(cvIntBox, reflect.TypeOf(cvIntBox))
      cvFloatBox := cast.ToFloat32(8.31)
      fmt.Println(cvFloatBox, reflect.TypeOf(cvFloatBox))
      cvBoolBox := cast.ToBool(true)
      fmt.Println(cvBoolBox, reflect.TypeOf(cvBoolBox))
      }
      

      輸出

      one more time
      3.12021
      8 int
      8.31 float32
      true bool

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類(lèi)似文章 更多