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

詳解Go語言strconv與其他基本數(shù)據(jù)類型轉(zhuǎn)換函數(shù)的使用

 更新時間:2022年12月01日 08:57:21   作者:陳明勇  
這篇文章將以 string 類型為中心,通過 strconv 標準庫,介紹其與其他基本數(shù)據(jù)類型相互轉(zhuǎn)換的函數(shù)。文中的示例代碼講解詳細,感興趣的可以了解一下

前言

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

strconv

strconv 包提供了 string 類型與其他基本數(shù)據(jù)類型之間轉(zhuǎn)換的函數(shù),本文不會介紹其所有函數(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)換的字符串
  • 返回值有兩個,第一個是轉(zhuǎn)換之后的整形數(shù)字,第二個是錯誤描述。
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ù)相比,多了一個 error 返回值,是因為如果是傳入的字符串無法轉(zhuǎn)成數(shù)字,例如 1a1,此函數(shù)就會返回 NumError 錯誤,而 Itoa 函數(shù),無論傳入的是什么樣的數(shù)字,都可以轉(zhuǎn)為 string,因此在轉(zhuǎn)換的過程中沒有 error 的說法。

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

FormatInt(i int64, base int) string

  • 第一個參數(shù)為指定數(shù)字,類型為 int64
  • 第二個參數(shù)為指定進制
  • 第三個參數(shù)為數(shù)字轉(zhuǎ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
}

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

ParseInt:給定基數(shù)(進制數(shù))和位數(shù),返回對應十進制的值

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

  • 第一個參數(shù) s 為待解析的字符串
  • 第二個參數(shù) base 為基數(shù),也就是進制數(shù),從 0、236 進制。
  • 第三個參數(shù) bitSize 為位數(shù),0、8、1632、64位分別對應 intint8、int16、int32、int64。如果 bitSize 小于 0 或大于 64,則返回錯誤。
  • 第一個返回值 i 為轉(zhuǎn)換之后的數(shù)字
  • 第二個返回值 err 為轉(zhuǎn)換時產(chǎn)生的錯誤信息,除了 bitSize 小于 0 或大于 64,會發(fā)生錯誤以外,如果所傳的字符串 sbase 參數(shù)或 bitSize 參數(shù)不匹配,也會發(fā)生錯誤。
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)
}

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

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

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

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

  • 第一個參數(shù) s 為帶轉(zhuǎn)換的字符串。
  • 第二個參數(shù)為 bitSize 為轉(zhuǎn)換后的位數(shù),32 代表 float32,64 代表 float64。
  • 第一個返回值為轉(zhuǎn)換后的浮點型數(shù)字。
  • 第二個返回值為轉(zhuǎn)換過程中所產(chǎn)生的錯誤
import (
	"fmt"
	"strconv"
)

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

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

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

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

  • 第一個參數(shù) f 為待轉(zhuǎn)換的浮點數(shù)。
  • 第二個參數(shù)為格式,可選值有b e E f g G x X
  • 第三個參數(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ù)會對結(jié)果值進行四舍五入計算。

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

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

ParseBool(str string) (bool, error)

  • 第一個參數(shù) str 為待轉(zhuǎn)換的字符串
  • 第一個返回值為轉(zhuǎn)換之后的 bool
  • 第二個返回值為轉(zhuǎn)換時所產(chǎn)生的錯誤。
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)
}

第一個字符串 true 轉(zhuǎn)布爾值成功了,但是第二個字符串 golang 轉(zhuǎn)布爾值失敗了,因為 bool 類型的可選值只有 truefalse,其他值無法轉(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é)

本文對 stringint 類型、float 類型和 bool 類型相互之間轉(zhuǎn)換的函數(shù)進行介紹,掌握這些函數(shù)的用法,應對開發(fā)中 string 類型與其他基本數(shù)據(jù)類型轉(zhuǎn)換的場景不成問題。

到此這篇關(guān)于詳解Go語言strconv與其他基本數(shù)據(jù)類型轉(zhuǎn)換函數(shù)的使用的文章就介紹到這了,更多相關(guān)Go語言strconv內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Go 中實現(xiàn)超時控制的方案

    Go 中實現(xiàn)超時控制的方案

    這篇文章主要介紹了Go 里的超時控制實現(xiàn)方案,本文給大家?guī)韮煞N解決方案,第一種方案是 Time.After(d Duration),第二種方案是利用 context,go 的 context 功能強大,本文通過實例代碼給大家介紹的非常詳細,感興趣的朋友跟隨小編一起看看吧
    2021-10-10
  • 深入了解Golang中的Slice底層實現(xiàn)

    深入了解Golang中的Slice底層實現(xiàn)

    本文主要為大家詳細介紹了Golang中slice的底層實現(xiàn),文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2023-02-02
  • Go timer如何調(diào)度

    Go timer如何調(diào)度

    本篇文章剖析下 Go 定時器的相關(guān)內(nèi)容。定時器不管是業(yè)務開發(fā),還是基礎(chǔ)架構(gòu)開發(fā),都是繞不過去的存在,由此可見定時器的重要程度,感興趣的可以了解一下
    2021-06-06
  • go語言用八百行代碼實現(xiàn)一個JSON解析器

    go語言用八百行代碼實現(xiàn)一個JSON解析器

    這篇文章主要為大家介紹了go語言用八百行代碼實現(xiàn)一個JSON解析器實例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-07-07
  • 用GO實現(xiàn)IP門禁優(yōu)化網(wǎng)絡流量管理

    用GO實現(xiàn)IP門禁優(yōu)化網(wǎng)絡流量管理

    這篇文章主要為大家介紹了用GO實現(xiàn)IP門禁優(yōu)化網(wǎng)絡流量管理,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-12-12
  • Go語言指針訪問結(jié)構(gòu)體的方法

    Go語言指針訪問結(jié)構(gòu)體的方法

    這篇文章主要介紹了Go語言指針訪問結(jié)構(gòu)體的方法,涉及Go語言指針及結(jié)構(gòu)體的使用技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-02-02
  • Golang實現(xiàn)Trie(前綴樹)的示例

    Golang實現(xiàn)Trie(前綴樹)的示例

    本文主要介紹了Golang實現(xiàn)Trie(前綴樹)的示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-01-01
  • Golang中的參數(shù)傳遞示例詳解

    Golang中的參數(shù)傳遞示例詳解

    參數(shù)傳遞是指在程序的傳遞過程中,實際參數(shù)就會將參數(shù)值傳遞給相應的形式參數(shù),然后在函數(shù)中實現(xiàn)對數(shù)據(jù)處理和返回的過程,下面這篇文章主要給大家介紹了關(guān)于Golang中參數(shù)傳遞的相關(guān)資料,需要的朋友可以參考下。
    2017-09-09
  • 解決golang 反射interface{}做零值判斷的一個重大坑

    解決golang 反射interface{}做零值判斷的一個重大坑

    這篇文章主要介紹了解決golang 反射interface{}做零值判斷的一個重大坑,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • 深入理解Go中defer的機制

    深入理解Go中defer的機制

    本文主要介紹了Go中defer的機制,包括執(zhí)行順序、參數(shù)預計算、閉包和與返回值的交互,具有一定的參考價值,感興趣的可以了解一下
    2025-02-02

最新評論

新兴县| 宁陕县| 高清| 麻城市| 灵宝市| 甘肃省| 磴口县| 定边县| 威远县| 淅川县| 怀集县| 彭山县| 昭平县| 和政县| 会同县| 永济市| 揭西县| 富锦市| 巴东县| 阿拉善右旗| 伊春市| 兴隆县| 望奎县| 绥芬河市| 乐昌市| 文成县| 惠安县| 阜阳市| 山阴县| 渭南市| 定结县| 扬州市| 广汉市| 盘锦市| 峨眉山市| 正安县| 西城区| 开平市| 丰原市| 黄骅市| 无棣县|