GoLang中Strconv庫有哪些常用方法
Strconv
strconv包實(shí)現(xiàn)了基本數(shù)據(jù)類型和其字符串表示的相互轉(zhuǎn)換。
更多函數(shù)請(qǐng)查看
string與int類型轉(zhuǎn)換
Atoi()
Atoi()函數(shù)用于將字符串類型的整數(shù)轉(zhuǎn)換為int類型,等價(jià)于ParseInt (s, 10, 0),轉(zhuǎn)換為 int 類型。
func Atoi(s string) (i int, err error)
v := "10" if s, err := strconv.Atoi(v); err == nil { fmt.Printf("%T, %v", s, s) } //Output: // //int, 10
Itoa()
Itoa()函數(shù)用于將int類型數(shù)據(jù)轉(zhuǎn)換為對(duì)應(yīng)的字符串表示,等價(jià)于FormatInt (int64(i), 10)。
func Itoa(i int) string
例子
i := 10 s := strconv.Itoa(i) fmt.Printf("%T, %v\n", s, s) //Output: // //string, 10
Parse 系列函數(shù)
Parse類函數(shù)用于轉(zhuǎn)換字符串為給定類型的值:ParseBool()、ParseFloat()、ParseInt()、ParseUint()
ParseBool
func ParseBool(str string) (value bool, err error)
ParseBool 返回字符串表示的布爾值。它接受 1, t, T, TRUE, true, True, 0, f, F, FALSE, false, False。任何其他值都會(huì)返回錯(cuò)誤。
例子
v := "true" if s, err := strconv.ParseBool(v); err == nil { fmt.Printf("%T, %v\n", s, s) } //Output: // //bool, true
ParseInt
func ParseInt(s string, base int, bitSize int) (i int64, err error)
ParseInt 以給定的基數(shù)(0、2 到 36)和位大小(0 到 64)解釋字符串 s,并返回相應(yīng)的值 i。
字符串可以以前導(dǎo)符號(hào)開頭:“+”或“-”。
如果 base 參數(shù)為 0,則真正的基數(shù)由符號(hào)后面的字符串前綴(如果存在)暗示:2 表示“0b”,8 表示“0”或“0o”,16 表示“0x”,否則為 10。此外,僅對(duì)于以 0 為基數(shù)的參數(shù),允許使用 Go 語法為整數(shù)文字定義的下劃線字符。
bitSize 參數(shù)指定結(jié)果必須適合的整數(shù)類型。位大小 0、8、16、32 和 64 對(duì)應(yīng)于 int、int8、int16、int32 和 int64。如果 bitSize 小于 0 或大于 64,則返回錯(cuò)誤。
ParseInt 返回的錯(cuò)誤具有具體類型 * NumError并包括 err.Num = s。如果 s 為空或包含無效數(shù)字,則 err.Err = ErrSyntax ,返回值為 0;如果 s 對(duì)應(yīng)的值不能用給定大小的有符號(hào)整數(shù)表示,則 err.Err = ErrRange并且返回值是適當(dāng)?shù)?bitSize 和符號(hào)的最大幅度整數(shù)
例子
v32 := "-354634382" if s, err := strconv.ParseInt(v32, 10, 32); err == nil { fmt.Printf("%T, %v\n", s, s) } if s, err := strconv.ParseInt(v32, 16, 32); err == nil { fmt.Printf("%T, %v\n", s, s) } v64 := "-3546343826724305832" if s, err := strconv.ParseInt(v64, 10, 64); err == nil { fmt.Printf("%T, %v\n", s, s) } if s, err := strconv.ParseInt(v64, 16, 64); err == nil { fmt.Printf("%T, %v\n", s, s) } //Output: // //int64, -354634382 //int64, -3546343826724305832
ParseUnit
func ParseUint(s string, base int, bitSize int) (n uint64, err error)
ParseUint 類似于ParseInt但用于無符號(hào)數(shù)。
不允許使用符號(hào)前綴
例子
v := "42" if s, err := strconv.ParseUint(v, 10, 32); err == nil { fmt.Printf("%T, %v\n", s, s) } if s, err := strconv.ParseUint(v, 10, 64); err == nil { fmt.Printf("%T, %v\n", s, s) } //Output: // //uint64, 42 //uint64, 42
ParseFloat
func ParseFloat(s string, bitSize int) (f float64, err error)
ParseFloat 將字符串 s 轉(zhuǎn)換為精度由 bitSize 指定的浮點(diǎn)數(shù):對(duì)于 float32 為 32,對(duì)于 float64 為 64。當(dāng) bitSize=32 時(shí),結(jié)果仍然是 float64 類型,但它可以轉(zhuǎn)換為 float32 而不會(huì)改變它的值。
ParseFloat 接受十進(jìn)制和十六進(jìn)制浮點(diǎn)數(shù)語法。如果 s 格式正確且接近有效浮點(diǎn)數(shù),則 ParseFloat 返回使用 IEEE754 無偏舍入舍入的最接近的浮點(diǎn)數(shù)。 (僅當(dāng)十六進(jìn)制表示中的位數(shù)多于尾數(shù)中的位數(shù)時(shí),才對(duì)十六進(jìn)制浮點(diǎn)值進(jìn)行四舍五入。)
ParseFloat 返回的錯(cuò)誤具有具體類型 * NumError并包括 err.Num = s。
如果 s 的語法格式不正確,則 ParseFloat 返回 err.Err = ErrSyntax 。
如果 s 在語法上格式正確,但距離給定大小的最大浮點(diǎn)數(shù)超過 1/2 ULP,則 ParseFloat 返回 f = ±Inf, err.Err = ErrRange 。
ParseFloat 將字符串“NaN”和(可能有符號(hào)的)字符串“Inf”和“Infinity”識(shí)別為它們各自的特殊浮點(diǎn)值。匹配時(shí)忽略大小寫
例子
v := "3.1415926535" if s, err := strconv.ParseFloat(v, 32); err == nil { fmt.Printf("%T, %v\n", s, s) } if s, err := strconv.ParseFloat(v, 64); err == nil { fmt.Printf("%T, %v\n", s, s) } if s, err := strconv.ParseFloat("NaN", 32); err == nil { fmt.Printf("%T, %v\n", s, s) } // ParseFloat is case insensitive if s, err := strconv.ParseFloat("nan", 32); err == nil { fmt.Printf("%T, %v\n", s, s) } if s, err := strconv.ParseFloat("inf", 32); err == nil { fmt.Printf("%T, %v\n", s, s) } if s, err := strconv.ParseFloat("+Inf", 32); err == nil { fmt.Printf("%T, %v\n", s, s) } if s, err := strconv.ParseFloat("-Inf", 32); err == nil { fmt.Printf("%T, %v\n", s, s) } if s, err := strconv.ParseFloat("-0", 32); err == nil { fmt.Printf("%T, %v\n", s, s) } if s, err := strconv.ParseFloat("+0", 32); err == nil { fmt.Printf("%T, %v\n", s, s) } //Output: // //float64, 3.1415927410125732 //float64, 3.1415926535 //float64, NaN //float64, NaN //float64, +Inf //float64, +Inf //float64, -Inf //float64, -0 //float64, 0
Format系列函數(shù)
Format系列函數(shù)實(shí)現(xiàn)了將給定類型數(shù)據(jù)格式化為string類型數(shù)據(jù)的功能。
FormatBool
func FormatBool(b bool) string
FormatBool 根據(jù) b 的值返回“true”或“false”。
例子
v := true s := strconv.FormatBool(v) fmt.Printf("%T, %v\n", s, s) //Output: // //string, true
FormatInt
func FormatInt(i int64, base int) string
FormatInt 返回給定基數(shù)中 i 的字符串表示形式,即 2 <= base <= 36。對(duì)于 >= 10 的數(shù)字值,結(jié)果使用小寫字母 ‘a’ 到 ‘z’。
例子
v := int64(-42) s10 := strconv.FormatInt(v, 10) fmt.Printf("%T, %v\n", s10, s10) s16 := strconv.FormatInt(v, 16) fmt.Printf("%T, %v\n", s16, s16) //Output: // //string, -42 //string, -2a
FormatUint
func FormatUint(i uint64, base int) string
FormatUint 返回給定基數(shù)中 i 的字符串表示形式,即 2 <= base <= 36。對(duì)于 >= 10 的數(shù)字值,結(jié)果使用小寫字母 ‘a’ 到 ‘z’
例子
v := uint64(42) s10 := strconv.FormatUint(v, 10) fmt.Printf("%T, %v\n", s10, s10) s16 := strconv.FormatUint(v, 16) fmt.Printf("%T, %v\n", s16, s16) //Output: // //string, 42 //string, 2a
FormatFloat
func FormatFloat(f float64, fmt byte, prec, bitSize int) string
FormatFloat 根據(jù)格式 fmt 和精度 prec 將浮點(diǎn)數(shù) f 轉(zhuǎn)換為字符串。
假設(shè)原始值是從 bitSize 位的浮點(diǎn)值(32 表示 float32,64 表示 float64)獲得的,它會(huì)對(duì)結(jié)果進(jìn)行四舍五入。 格式 fmt 是 ‘b’(-ddddp±ddd,二進(jìn)制指數(shù))、‘e’(-d.dddde±dd,十進(jìn)制指數(shù))、‘E’(-d.ddddE±dd,十進(jìn)制指數(shù))之一), ‘f’ (-ddd.dddd, 無指數(shù)), ‘g’ (‘e’ 表示大指數(shù),‘f’ 否則), ‘G’ (‘E’ 表示大指數(shù),‘f’ 否則), ’ x’(-0xd.ddddp±ddd,十六進(jìn)制分?jǐn)?shù)和二進(jìn)制指數(shù)),或 ‘X’(-0Xd.ddddP±ddd,十六進(jìn)制分?jǐn)?shù)和二進(jìn)制指數(shù))。 精度 prec 控制由“e”、“E”、“f”、“g”、“G”、“x”和“X”格式打印的位數(shù)(不包括指數(shù))。對(duì)于’e’、‘E’、‘f’、‘x’和’X’,它是小數(shù)點(diǎn)后的位數(shù)。對(duì)于“g”和“G”,它是有效數(shù)字的最大數(shù)量(刪除尾隨零)。 特殊精度 -1 使用所需的最少位數(shù),以便ParseFloat將準(zhǔn)確返回 f
例子
v := 3.1415926535 s32 := strconv.FormatFloat(v, 'E', -1, 32) fmt.Printf("%T, %v\n", s32, s32) s64 := strconv.FormatFloat(v, 'E', -1, 64) fmt.Printf("%T, %v\n", s64, s64) //Output: // //string, 3.1415927E+00 //string, 3.1415926535E+00
其他
isPrint
func IsPrint(r rune) bool
返回一個(gè)字符是否是可打印的,和unicode.IsPrint一樣,r必須是:字母(廣義)、數(shù)字、標(biāo)點(diǎn)、符號(hào)、ASCII空格。
CanBackquote
func CanBackquote(s string) bool
返回字符串s是否可以不被修改的表示為一個(gè)單行的、沒有空格和tab之外控制字符的反引號(hào)字符串。
除上文列出的函數(shù)外,strconv包中還有Append系列、Quote系列等函數(shù)。具體用法可查看官方文檔。
到此這篇關(guān)于GoLang中Strconv庫有哪些常用方法的文章就介紹到這了,更多相關(guān)Go Strconv庫內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Go語言通過WaitGroup實(shí)現(xiàn)控制并發(fā)的示例詳解
Channel能夠很好的幫助我們控制并發(fā),但是在開發(fā)習(xí)慣上與顯示的表達(dá)不太相同,所以在Go語言中可以利用sync包中的WaitGroup實(shí)現(xiàn)并發(fā)控制,本文就來和大家詳細(xì)聊聊WaitGroup如何實(shí)現(xiàn)控制并發(fā)2023-01-01Go語言fsnotify接口實(shí)現(xiàn)監(jiān)測(cè)文件修改
這篇文章主要為大家介紹了Go語言fsnotify接口實(shí)現(xiàn)監(jiān)測(cè)文件修改的示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06Go語言題解LeetCode724尋找數(shù)組的中心下標(biāo)
這篇文章主要為大家介紹了Go語言題解LeetCode724尋找數(shù)組的中心下標(biāo),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-12-12golang如何實(shí)現(xiàn)抓取IP地址的蜘蛛程序詳解
這篇文章主要給大家介紹了關(guān)于利用golang如何實(shí)現(xiàn)抓取IP地址的蜘蛛程序的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-07-07Golang自定義結(jié)構(gòu)體轉(zhuǎn)map的操作
這篇文章主要介紹了Golang自定義結(jié)構(gòu)體轉(zhuǎn)map的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-12-12Golang巧用defer進(jìn)行錯(cuò)誤處理的方法
錯(cuò)誤處理是程序的重要組成部分,有效且優(yōu)雅的處理錯(cuò)誤是大多數(shù)程序員的追求,下面這篇文章主要給大家介紹了關(guān)于Golang中巧用defer進(jìn)行錯(cuò)誤處理的方法,文中通過示例介紹的非常詳細(xì),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起看看吧。2017-05-05