最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Go標(biāo)準(zhǔn)庫strconv實(shí)現(xiàn)string類型與其他基本數(shù)據(jù)類型之間轉(zhuǎn)換

 更新時(shí)間:2023年11月24日 08:34:10   作者:陳明勇  
這篇文章主要為大家介紹了Go標(biāo)準(zhǔn)庫strconv實(shí)現(xiàn)string類型與其他基本數(shù)據(jù)類型之間轉(zhuǎn)換示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

前言

上篇文章介紹了 strings 標(biāo)準(zhǔn)庫里的一些常用的函數(shù)和方法,本文也是以 string 類型為中心,通過 strconv 標(biāo)準(zhǔn)庫,介紹其與其他基本數(shù)據(jù)類型相互轉(zhuǎn)換的函數(shù)。

strconv

strconv 包提供了 string 類型與其他基本數(shù)據(jù)類型之間轉(zhuǎn)換的函數(shù),本文不會(huì)介紹其所有函數(shù),如果想了解更多的小伙伴可以到 Go 包文檔 查看。

string 與 int 之間的轉(zhuǎn)換

Itoa:int 類型轉(zhuǎn) string 類型

Itoa(i int) string

  • 參數(shù) i 為待轉(zhuǎn)換的數(shù)字。

返回值為轉(zhuǎn)換之后的字符串。

import (
  "fmt"
  "strconv"
)
func main() {
  num := 16
  str := strconv.Itoa(num)
  fmt.Printf("類型:%T,值:%s", str, str) // 類型:string,值:16
}

Atoi:string 類型轉(zhuǎn) int 類型

Atoi(s string) (int, error)

  • 函數(shù)的參數(shù)為待轉(zhuǎn)換的字符串

返回值有兩個(gè),第一個(gè)是轉(zhuǎn)換之后的整形數(shù)字,第二個(gè)是錯(cuò)誤描述。

import (
  "fmt"
  "strconv"
)
func main() {
  str := "666"
  num, err := strconv.Atoi(str)
  if err != nil {
      fmt.Println("err: ", err.Error())
      return
  }
  fmt.Printf("類型:%T,值:%d", num, num) // 類型:int,值:666
}

此函數(shù)與 Itoa 函數(shù)相比,多了一個(gè) error 返回值,是因?yàn)槿绻莻魅氲淖址疅o法轉(zhuǎn)成數(shù)字,例如 1a1,此函數(shù)就會(huì)返回 NumError 錯(cuò)誤,而 Itoa 函數(shù),無論傳入的是什么樣的數(shù)字,都可以轉(zhuǎn)為 string,因此在轉(zhuǎn)換的過程中沒有 error 的說法。

FormatInt:將數(shù)字轉(zhuǎn)成指定進(jìn)制數(shù)并以 string 類型返回

FormatInt(i int64, base int) string

  • 第一個(gè)參數(shù)為指定數(shù)字,類型為 int64
  • 第二個(gè)參數(shù)為指定進(jìn)制

第三個(gè)參數(shù)為數(shù)字轉(zhuǎn)成指定進(jìn)制數(shù)后的字符串

import (
  "strconv"
)
func main() {
  var num int64 = 2
  str := strconv.FormatInt(num, 2)
  var num2 int64 = 17
  str2 := strconv.FormatInt(num2, 16)
  println(str)  // 10
  println(str2) // 11
}

上述代碼實(shí)現(xiàn)了將數(shù)字 2 轉(zhuǎn)成二進(jìn)制的形式 10,將數(shù)字 17 轉(zhuǎn)成十六進(jìn)制的形式 11,并以 string 類型返回。上述數(shù)字皆代表著有符號(hào)為的 int64 類型,與之對(duì)應(yīng)的還有無符號(hào)位的 uint64 類型的轉(zhuǎn)換函數(shù) FormatUint。

ParseInt:給定基數(shù)(進(jìn)制數(shù))和位數(shù),返回對(duì)應(yīng)十進(jìn)制的值

ParseInt(s string, base int, bitSize int) (i int64, err error)

  • 第一個(gè)參數(shù) s 為待解析的字符串
  • 第二個(gè)參數(shù) base 為基數(shù),也就是進(jìn)制數(shù),從 0、2 到 36 進(jìn)制。
  • 第三個(gè)參數(shù) bitSize 為位數(shù),0、816、32、64位分別對(duì)應(yīng) int、int8、int16、int32、int64。如果 bitSize 小于 0 或大于 64,則返回錯(cuò)誤。
  • 第一個(gè)返回值 i 為轉(zhuǎn)換之后的數(shù)字

第二個(gè)返回值 err 為轉(zhuǎn)換時(shí)產(chǎn)生的錯(cuò)誤信息,除了 bitSize 小于 0 或大于 64,會(huì)發(fā)生錯(cuò)誤以外,如果所傳的字符串 s 與 base 參數(shù)或 bitSize 參數(shù)不匹配,也會(huì)發(fā)生錯(cuò)誤。

import (
  "fmt"
  "strconv"
)
func main() {
  parseInt, err := strconv.ParseInt("100", 2, 64)
  if err != nil {
      fmt.Println(err.Error())
      return
  }
  println(parseInt) // 4
  parseInt2, err := strconv.ParseInt("666", 2, 64)
  if err != nil {
      fmt.Println(err.Error()) // strconv.ParseInt: parsing "666": invalid syntax
      return
  }
  println(parseInt2)
}

首先將二進(jìn)制的 100 轉(zhuǎn)成十進(jìn)制,為 4,然后將二進(jìn)制的 666 轉(zhuǎn)成十進(jìn)制,但是二進(jìn)制所對(duì)應(yīng)的數(shù)字沒有 666,因此轉(zhuǎn)換錯(cuò)誤,返回 strconv.ParseInt: parsing "666": invalid syntax 錯(cuò)誤信息。與之對(duì)應(yīng)的還有返回?zé)o符號(hào)位的 uint64 類型的轉(zhuǎn)換函數(shù) ParseUint

string 與 float 之間的轉(zhuǎn)換

ParseFloat:字符串類型轉(zhuǎn)浮點(diǎn)型類型

ParseFloat(s string, bitSize int) (float64, error)

  • 第一個(gè)參數(shù) s 為帶轉(zhuǎn)換的字符串。
  • 第二個(gè)參數(shù)為 bitSize 為轉(zhuǎn)換后的位數(shù),32 代表 float32,64 代表 float64
  • 第一個(gè)返回值為轉(zhuǎn)換后的浮點(diǎn)型數(shù)字。

第二個(gè)返回值為轉(zhuǎn)換過程中所產(chǎn)生的錯(cuò)誤

import (
  "fmt"
  "strconv"
)
func main() {
  num, err := strconv.ParseFloat("11.05", 64)
  if err != nil {
      return
  }
  fmt.Println(num)
}

如果傳入的 s 的語法錯(cuò)誤如 1s1,則轉(zhuǎn)換失敗,返回 error

FormatFloat:根據(jù)格式 fmt 和精度 prec 將浮點(diǎn)數(shù) f 轉(zhuǎn)換為字符串

FormatFloat(f float64, fmt byte, prec, bitSize int) string

  • 第一個(gè)參數(shù) f 為待轉(zhuǎn)換的浮點(diǎn)數(shù)。
  • 第二個(gè)參數(shù)為格式,可選值有b e E f g G x X。
  • 第三個(gè)參數(shù) prec 為精度,精確到幾位小數(shù)。
  • 返回值為轉(zhuǎn)換后的字符串。
import (
    "fmt"
    "strconv"
)

func main() {
    str := strconv.FormatFloat(5.26, 'f', 1, 64)
    fmt.Println(str) // 5.3
}

FormatFloat 函數(shù)會(huì)對(duì)結(jié)果值進(jìn)行四舍五入計(jì)算。

string 與 bool 之間的轉(zhuǎn)換

ParseBool:字符串轉(zhuǎn)布爾值

ParseBool(str string) (bool, error)

  • 第一個(gè)參數(shù) str 為待轉(zhuǎn)換的字符串
  • 第一個(gè)返回值為轉(zhuǎn)換之后的 bool 值

第二個(gè)返回值為轉(zhuǎn)換時(shí)所產(chǎn)生的錯(cuò)誤。

import (
  "fmt"
  "strconv"
)
func main() {
  bool1, err := strconv.ParseBool("true")
  if err != nil {
      fmt.Println(err.Error())
      return
  }
  fmt.Println(bool1) // true
  bool2, err := strconv.ParseBool("golang")
  if err != nil {
      fmt.Println(err.Error()) // strconv.ParseBool: parsing "golang": invalid syntax
      return
  }
  fmt.Println(bool2)
}

第一個(gè)字符串 true 轉(zhuǎn)布爾值成功了,但是第二個(gè)字符串 golang 轉(zhuǎn)布爾值失敗了,因?yàn)?nbsp;bool 類型的可選值只有 true 和 false,其他值無法轉(zhuǎn)成布爾值。

FormatBool:布爾值轉(zhuǎn)字符串

FormatBool(b bool) string

  • 參數(shù) b 為帶轉(zhuǎn)換的布爾值。

返回值為轉(zhuǎn)換之后的字符串。

import (
  "fmt"
  "strconv"
)

func main() {
  boolStr := strconv.FormatBool(true)
  fmt.Println(boolStr) // "true"
}

小結(jié)

本文對(duì) string 與 int 類型、float 類型和 bool 類型相互之間轉(zhuǎn)換的函數(shù)進(jìn)行介紹,掌握這些函數(shù)的用法,應(yīng)對(duì)開發(fā)中 string 類型與其他基本數(shù)據(jù)類型轉(zhuǎn)換的場(chǎng)景不成問題,更多關(guān)于Go strconv類型轉(zhuǎn)換的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Go語言如何使用golang-jwt/jwt/v4進(jìn)行JWT鑒權(quán)詳解

    Go語言如何使用golang-jwt/jwt/v4進(jìn)行JWT鑒權(quán)詳解

    最近項(xiàng)目中需要用到鑒權(quán)機(jī)制,golang中jwt可以用,這篇文章主要給大家介紹了關(guān)于Go語言如何使用golang-jwt/jwt/v4進(jìn)行JWT鑒權(quán)的相關(guān)資料,需要的朋友可以參考下
    2022-09-09
  • Go設(shè)計(jì)模式之空對(duì)象模式實(shí)戰(zhàn)

    Go設(shè)計(jì)模式之空對(duì)象模式實(shí)戰(zhàn)

    空對(duì)計(jì)模式是Go語言中一種行為型設(shè)計(jì)模式,它通過返回實(shí)現(xiàn)了相同接口但不執(zhí)行任何操作的空對(duì)象來替代nil值,從而避免因訪問nil指針而導(dǎo)致的程序panic,感興趣的可以了解一下
    2025-09-09
  • GoLang使goroutine停止的五種方法實(shí)例

    GoLang使goroutine停止的五種方法實(shí)例

    goroutine是Go并行設(shè)計(jì)的核心,下面這篇文章主要給大家介紹了關(guān)于GoLang使goroutine停止的五種方法,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-07-07
  • Go語言七篇入門教程六網(wǎng)絡(luò)編程

    Go語言七篇入門教程六網(wǎng)絡(luò)編程

    這篇文章主要為大家介紹了Go語言的網(wǎng)絡(luò)編程,其中包含了Socket編程,Http編程以及RPC編程,本篇文章是Go語言七篇入門系列文章,有需要的朋友可以借鑒下
    2021-11-11
  • 使用Go語言實(shí)現(xiàn)一個(gè)簡(jiǎn)單的詞頻分析系統(tǒng)

    使用Go語言實(shí)現(xiàn)一個(gè)簡(jiǎn)單的詞頻分析系統(tǒng)

    在數(shù)據(jù)分析和文本挖掘中,詞頻統(tǒng)計(jì)(Word Frequency Analysis) 是最基礎(chǔ)也是最常用的技術(shù)之一,本文將帶你用 Go 語言實(shí)現(xiàn)一個(gè)簡(jiǎn)易的 詞頻分析系統(tǒng),感興趣的小伙伴可以了解下
    2025-09-09
  • 利用go語言判斷是否是完全二叉樹

    利用go語言判斷是否是完全二叉樹

    這篇文章主要介紹了利用go語言判斷是否是完全二叉樹,當(dāng)一個(gè)節(jié)點(diǎn)存在右子節(jié)點(diǎn)但是不存在左子節(jié)點(diǎn)這顆樹視為非完全二叉樹,通過利用GO語言判斷來判斷出否是完全二叉樹,詳細(xì)內(nèi)容參考如下
    2022-05-05
  • Go語言基礎(chǔ)go fmt命令使用示例詳解

    Go語言基礎(chǔ)go fmt命令使用示例詳解

    這篇文章主要為大家介紹了Go語言基礎(chǔ)go fmt命令的使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2021-11-11
  • 詳解如何在Golang中監(jiān)聽多個(gè)channel

    詳解如何在Golang中監(jiān)聽多個(gè)channel

    這篇文章主要為大家詳細(xì)介紹了如何在Golang中實(shí)現(xiàn)監(jiān)聽多個(gè)channel,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-03-03
  • Golang token的生成和解析詳解

    Golang token的生成和解析詳解

    這篇文章主要給大家介紹了Golang token的生成和解析,文中通過代碼示例給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2024-02-02
  • Go信號(hào)處理如何優(yōu)雅地關(guān)閉你的應(yīng)用

    Go信號(hào)處理如何優(yōu)雅地關(guān)閉你的應(yīng)用

    Go?中的優(yōu)雅關(guān)閉機(jī)制使得在應(yīng)用程序接收到終止信號(hào)時(shí),能夠進(jìn)行平滑的資源清理,通過使用?context?來管理?goroutine?的生命周期,結(jié)合?signal?包捕獲系統(tǒng)信號(hào),你可以在?Go?應(yīng)用中實(shí)現(xiàn)一個(gè)健壯且優(yōu)雅的關(guān)閉過程,對(duì)Go關(guān)閉應(yīng)用相關(guān)操作感興趣的朋友一起看看吧
    2025-01-01

最新評(píng)論

汾阳市| 鸡泽县| 罗甸县| 庄河市| 上饶市| 台北县| 滕州市| 吴川市| 西林县| 中卫市| 东城区| 平顺县| 延安市| 岐山县| 内黄县| 四子王旗| 乡宁县| 华阴市| 松阳县| 东台市| 偏关县| 隆林| 柳江县| 团风县| 临邑县| 连云港市| 博客| 鄯善县| 濉溪县| 洪洞县| 宜昌市| 南汇区| 和田县| 繁峙县| 安庆市| 益阳市| 辽宁省| 安仁县| 永德县| 嘉兴市| 平度市|