<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          捋一捋Go語言的一個(gè)類型轉(zhuǎn)換工具包strconv包

          共 3941字,需瀏覽 8分鐘

           ·

          2021-03-13 03:18

          點(diǎn)擊上方“Go語言進(jìn)階學(xué)習(xí)”,進(jìn)行關(guān)注

          回復(fù)“Go語言”即可獲贈從入門到進(jìn)階共10本電子書

          鉛華不可棄,莫是藁砧歸。

          前言

          Hey,大家好,我是碼農(nóng),星期八,這次咱們來學(xué)一下Go語言的一個(gè)類型轉(zhuǎn)換工具包strconv。

          不知道你有沒有想過。

          在Go中,字符串100如何轉(zhuǎn)成數(shù)字100。

          這樣?

          func main() {    var score = "100"    i := int(score)    fmt.Printf(i)}

          No,No,No,看一下執(zhí)行結(jié)果。

          報(bào)錯(cuò)啦,說明并不是這么簡單粗暴轉(zhuǎn)換的?。?!


          string轉(zhuǎn)int(用Atoi)

          代碼

          func main() {    //string 100    var scoreStr = "100"    fmt.Printf("%v,%T\n", scoreStr, scoreStr) //100,string    score, err := strconv.Atoi(scoreStr)    //轉(zhuǎn)換失敗    if err != nil {        panic(err)}    fmt.Printf("%v,%T\n", score, score)}

          執(zhí)行結(jié)果

          可以發(fā)現(xiàn),轉(zhuǎn)換成功之后,就成了int類型。


          int轉(zhuǎn)string(用Itoa)

          代碼

          func main() {    //int 100    var scoreInt = 100    fmt.Printf("%v,%T\n", scoreInt, scoreInt) //100,string    score  := strconv.Itoa(scoreInt)    fmt.Printf("%v,%T\n", score, score)}

          執(zhí)行結(jié)果

          注:在Go中,只能通過上述兩種方式進(jìn)行string -> int,int -> string


          strconv.Parse轉(zhuǎn)換

          strconvParse相關(guān)方法,也是講string類型轉(zhuǎn)換為其他類型,但是相比之下。

          strconvParse的多樣性會多一點(diǎn)。

          strconv.ParseBool()

          這個(gè)方法,是將字符串的Bool類型,轉(zhuǎn)成真正的Bool類型。

          示例代碼

          func main() {    var tString = "true"//可以是 1,0,t,f,T,F(xiàn),true,false,True,F(xiàn)alse,TRUE,F(xiàn)ALSE    fmt.Printf("%T,%v\n", tString, tString)    tBool, err := strconv.ParseBool(tString)    if err != nil {        panic(err)}    fmt.Printf("%T,%v\n", tBool, tBool)}

          執(zhí)行結(jié)果

          成功將字符串true轉(zhuǎn)成Bool true。

          strconv.ParseInt()

          這個(gè),就很簡單了,跟strconv.Atoi()基本一樣。

          示例代碼

          func main() {   var tString = "666"   fmt.Printf("%T,%v\n", tString, tString)   tInt, err := strconv.ParseInt(tString,1064)   if err != nil {      panic(err)   }   fmt.Printf("%T,%v\n", tInt, tInt)}

          執(zhí)行結(jié)果

          第二個(gè)參數(shù)10和第三個(gè)參數(shù)64的意思。

          可能你同我一樣,剛開始不明白第二個(gè)參數(shù)10第三個(gè)參數(shù)64的意思。

          但是下面一張圖,可能你就懂了。

          理解就好,一般情況下,寫成上述代碼就行,本來就是轉(zhuǎn)int的,想那么多干嘛?。?!

          strconv.parseUint()

          同上,但是這個(gè)只能轉(zhuǎn)正數(shù),不能轉(zhuǎn)負(fù)數(shù)。

          strconv.ParseFloat()

          這個(gè),看名字就知道是將字符串浮點(diǎn)數(shù)轉(zhuǎn)真正的浮點(diǎn)數(shù)咯。

          示例代碼

          func main() {    var tString = "3.1415"    fmt.Printf("%T,%v\n", tString, tString)    tFloat, err := strconv.ParseFloat(tString,64)    if err != nil {        panic(err)}    fmt.Printf("%T,%v\n", tFloat, tFloat)}

          第二個(gè)參數(shù)64,同上,也是因?yàn)?/span>返回的就是float64,所以容量也得是64。

          執(zhí)行結(jié)果


          strconv.Format轉(zhuǎn)換

          這個(gè)和strconv.Parse是相反的,是將int/float/bool等 -> string的一個(gè)過程。

          但是我總感覺有點(diǎn)脫褲子放屁的感覺,既然官方提供了,就隨便看看叭!??!

          這里我就使用簡述的代碼來寫的。

          func main() {    a := strconv.FormatBool(true)    //E表示十進(jìn)制,    b := strconv.FormatFloat(3.1415, 'E', -1, 64)    c := strconv.FormatInt(666, 10)    fmt.Printf("%v,%T\n",a,a)    fmt.Printf("%v,%T\n",b,b)    fmt.Printf("%v,%T\n",c,c)}

          執(zhí)行結(jié)果


          總結(jié)

          其實(shí)這次我們的重點(diǎn)主要是前倆,string - > int(用Atoi),int -> string(用Itoa)。

          其他的主要分為strconv.Parse系列和strconv.Format系列。

          相對來說Parse系列可能會用的更多一點(diǎn),Format相關(guān)使用的不是太多,了解就好!

          總之,不管怎么樣,都要敲一下代碼。

          如果在操作過程中有任何問題,記得下面留言,我們看到會第一時(shí)間解決問題。

          我是碼農(nóng)星期八,如果覺得還不錯(cuò),記得動手點(diǎn)贊一下哈。感謝你的觀看。

          想學(xué)習(xí)更多關(guān)于Python的知識,可以參考學(xué)習(xí)網(wǎng)址:http://pdcfighting.com/,點(diǎn)擊閱讀原文,可以直達(dá)噢~

          ------------------- End -------------------

          往期精彩文章推薦:

          歡迎大家點(diǎn)贊,留言,轉(zhuǎn)發(fā),轉(zhuǎn)載,感謝大家的相伴與支持

          想加入Go學(xué)習(xí)群請?jiān)诤笈_回復(fù)【入群

          萬水千山總是情,點(diǎn)個(gè)【在看】行不行

          瀏覽 21
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  人人操人人爽 | 男女免费av | 亚洲操一操 | 亚洲欧美成人在线 | 91精品国产乱码久久久久 |