欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

go語言實現(xiàn)字符串與其它類型轉(zhuǎn)換(strconv包)

 更新時間:2024年10月15日 10:08:54   作者:fanfjaiynu  
strconv包是Go語言標(biāo)準(zhǔn)庫的一部分,主要提供字符串與基本數(shù)據(jù)類型之間的轉(zhuǎn)換功能,使用strconv包可以方便地在不同類型之間進(jìn)行轉(zhuǎn)換,滿足日常編程中的需求,感興趣的可以了解一下

與字符串相關(guān)的類型轉(zhuǎn)換都是通過 strconv 包實現(xiàn)的

strconv包概述

strconv是兩個單詞的縮寫。string convert = strconv

strconv包位于Go語言的標(biāo)準(zhǔn)庫中,它提供了一系列用于字符串和基本數(shù)據(jù)類型之間轉(zhuǎn)換的函數(shù)。這些函數(shù)主要包括以下幾種類型:

  • 將基本數(shù)據(jù)類型轉(zhuǎn)換為字符串的函數(shù),如Itoa、FormatInt、FormatFloat、FormatBool等。
  • 將字符串解析為基本數(shù)據(jù)類型的函數(shù),如Atoi、ParseInt、ParseFloat、ParseBool等。
  • 附加到已存在字節(jié)數(shù)組的函數(shù),如AppendInt、AppendFloat、AppendBool等。
  • 其他輔助函數(shù),如IsPrint、IsGraphic、Quote、Unquote等。

將字符串轉(zhuǎn)換為其他基礎(chǔ)類型的過程叫做解析parse,其他基礎(chǔ)類型轉(zhuǎn)換為字符串的過程成為格式化format

1、string與int類型轉(zhuǎn)換

1.1、Atoi()函數(shù)用于將字符串類型的整數(shù)轉(zhuǎn)換為int類型
strconv.Atoi(s string) (i int, err error)

由于string可能無法轉(zhuǎn)換為int,所以有兩個返回值:第一個返回值是轉(zhuǎn)換成的int值,第二個返回值判斷是否轉(zhuǎn)換成功

//var age ="22歲" 轉(zhuǎn)換失敗
var age ="22" // 轉(zhuǎn)換成功
age1,err:=strconv.Atoi(age)
if err != nil {
    fmt.Println("轉(zhuǎn)換出錯")
    return
}else {
    fmt.Printf("類型是:%T,值是:%d",age1,age1)
}

1.2、Itoa()函數(shù)用于將int類型數(shù)據(jù)轉(zhuǎn)換為對應(yīng)的字符串表示
strconv.Itoa(i int) string

i := 100
s := strconv.Itoa(i)
fmt.Println("類型是:%T 值是:%#v\n", s2, s2) // 類型是:string 值是:"999"

2、Parse系列函數(shù)

Parse類函數(shù)用于轉(zhuǎn)換字符串為給定類型的值:ParseBool()、ParseFloat()、ParseInt()、ParseUint()

2.1、ParseBool()strconv.ParseBool(str string) (value bool, err error)

返回字符串表示的bool值,它只接受值為1、0、t、f、T、F、true、false、True、False、TRUE、FALSE的字符串,否則返回錯誤

fmt.Println(strconv.ParseBool("1"))    // true
fmt.Println(strconv.ParseBool("t"))    // true
fmt.Println(strconv.ParseBool("T"))    // true
fmt.Println(strconv.ParseBool("true")) // true
fmt.Println(strconv.ParseBool("True")) // true
fmt.Println(strconv.ParseBool("TRUE")) // true
fmt.Println(strconv.ParseBool("0"))     // false
fmt.Println(strconv.ParseBool("f"))     // false
fmt.Println(strconv.ParseBool("F"))     // false
fmt.Println(strconv.ParseBool("false")) // false
fmt.Println(strconv.ParseBool("False")) // false
fmt.Println(strconv.ParseBool("FALSE")) // false

2.2、ParseInt()返回字符串表示的整數(shù)值,接受正負(fù)號
strconv.ParseInt(s string, base int, bitSize int) (i int64, err error)

  • s:要轉(zhuǎn)換的字符串
  • base:指定進(jìn)制(2進(jìn)制到36進(jìn)制) ,當(dāng)base=0的時候,表示根據(jù)string的前綴來判斷以什么進(jìn)制去解析:0x開頭的以16進(jìn)制的方式去解析,0開頭的以8進(jìn)制方式去解析,其它的以10進(jìn)制方式解析
  • bitSize:起到string轉(zhuǎn)int時的一個限制作用,有效值為0、8、16、32、64。如果超過了bitSize的限制作用就會將報錯信息輸出到error中
  • 返回轉(zhuǎn)換后的結(jié)果和轉(zhuǎn)換失敗的錯誤
//轉(zhuǎn)換成功
s1 := "123"
ps1,err := strconv.ParseInt(s1, 10, 8) // 指將s1轉(zhuǎn)換為10進(jìn)制數(shù),8指的是轉(zhuǎn)換結(jié)果最大值不超過int8,即127
if err != nil{
	fmt.Printf("err is %v\n", err)
	return
}else{
	fmt.Printf("類型: %T ,值: %d", ps1, ps1) //類型: int64 ,值: 123
}

//轉(zhuǎn)換失敗
s1 := "129" // 超過int8最大值127
ps1,err := strconv.ParseInt(s1, 10, 8) // 指將s1轉(zhuǎn)換為10進(jìn)制數(shù),8指的是轉(zhuǎn)換結(jié)果最大值不超過int8,即127
if err != nil{
	fmt.Printf("err is %v\n", err)
	return
}else{
	fmt.Printf("類型: %T ,值: %d", ps1, ps1) //err is strconv.ParseInt: parsing "129": value out of range
}

2.3 ParseUint()ParseUint類似ParseInt但不接受正負(fù)號,用于無符號整型
strconv.ParseUint(s string, base int, bitSize int) (i int64, err error)

2.4、ParseFloat()strconv.ParseFloat(s string, bitSize int) (f float64, err error)

  • s:要轉(zhuǎn)換的字符串
  • bitSize:指定浮點類型(32:float32、64:float64)
  • 如果 s 是合法的格式,而且接近一個浮點值,則返回浮點數(shù)的四舍五入值
  • 如果 s 不是合法的格式,則返回“語法錯誤”
  • 如果轉(zhuǎn)換結(jié)果超出 bitSize 范圍,則返回“超出范圍”
	f := "1.2342332"
	f1, err := strconv.ParseFloat(f, 64)
	if err != nil {
		fmt.Printf("err is %v\n", err)
		return
	} else {
		fmt.Printf("類型為:%T,值為:%f", f1, f1)
	} //類型為:float64,值為:1.234230

3、Format系列函數(shù)

將給定類型格式化為string類型數(shù)據(jù)

3.1、FormatBool()用于將布爾類型的值轉(zhuǎn)換為字符串類型
strconv.FormatBool(b bool) string

  • 如果 b 的值為 true,則將返回字符串 “true”,否則將返回 “false”
fmt.Println(strconv.FormatBool(0 < 1)) // true
fmt.Println(strconv.FormatBool(0 > 1)) // false
fmt.Println(strconv.FormatBool(true)) // 將true轉(zhuǎn)換為字符串

3.2、FormatInt()strconv.FormatInt(i int64, base int) string

  • i :要轉(zhuǎn)換的整數(shù)類型
  • base:2-32進(jìn)制,結(jié)果中會使用小寫字母’a’到’z’表示大于10的數(shù)字
s3 := strconv.FormatInt(-2, 16) 
fmt.Printf("類型為:%T,值為:%#v",s3,s3) // 類型為:string,值為:"-2"

3.3、FormatUint()是FormatInt的無符號整數(shù)版本
strconv.FormatUint(i int64, base int) string

3.4、FormatFloat()將浮點數(shù)表示為字符串并返回
strconv.FormatFloat(f float64, fmt byte, prec, bitSize int) string

  • f:要轉(zhuǎn)換的浮點數(shù)
  • 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’:其它情況)
  • prec控制精度
    如果格式標(biāo)記為 ‘e’,‘E’和’f’,則 prec 表示小數(shù)點后的數(shù)字位數(shù)
    如果格式標(biāo)記為 ‘g’,‘G’,則 prec 表示總的數(shù)字位數(shù)(整數(shù)部分+小數(shù)部分)
f := 100.123456789

fmt.Println(strconv.FormatFloat(f, 'g', 5, 64))
// 100.12
fmt.Println(strconv.FormatFloat(f, 'G', 5, 64))
// 100.12
fmt.Println(strconv.FormatFloat(f, 'f', 5, 64))
// 100.12346
fmt.Println(strconv.FormatFloat(f, 'e', 5, 64))
// 1.00123e+02
fmt.Println(strconv.FormatFloat(f, 'E', 5, 64))
// 1.00123E+02

4、Append系列

Append類的函數(shù)和Format類的函數(shù)工作方式類似,只不過將轉(zhuǎn)換后的結(jié)果追加到一個slice中

4.1、AppendBool()strconv.AppendBool(num1 []byte, num2 bool) []byte

  • 根據(jù)num2的值將bool(即true或false)追加到num1中,并返回擴(kuò)展的緩沖區(qū)
val := []byte("Is Bool: ")
val = strconv.AppendBool(val, true)    
fmt.Println(string(val)) // Is Bool: true

4.2、AppendFloat()strconv.AppendFloat(dst []byte, f float64, fmt byte, prec int, bitSize int) []byte

  • 將浮點數(shù) f 轉(zhuǎn)換為字符串值,并將轉(zhuǎn)換結(jié)果追加到 dst 的尾部
  • 返回追加后的 []byte
val1 := []byte("Float32值:")
val1 = strconv.AppendFloat(val1,4.5683568954,'E',-1,32)
fmt.Println(string(val1))
val2 := []byte("Float64值:")
val2 = strconv.AppendFloat(val2,6.7415678653,'E',-1,64)
fmt.Println(string(val2))

4.3、AppendInt()將 int 型整數(shù) i 轉(zhuǎn)換為字符串形式,并追加到 dst 的尾部
strconv.AppendInt(dst []byte, i int64, base int) []byte

  • i:要轉(zhuǎn)換的字符串
  • base:進(jìn)位制
  • 返回追加后的 []byte
val1 := []byte("整數(shù)值(進(jìn)制10): ")
val1 = strconv.AppendInt(val1, -35, 10)
fmt.Println(string(val1)) //整數(shù)值(進(jìn)制10): -35
  
val2 := []byte("整數(shù)值(進(jìn)制16): ")
val2 = strconv.AppendInt(val2, -44, 16)
fmt.Println(string(val2)) //整數(shù)值(進(jìn)制16): -2c

4.4、AppendUint()是AppendInt的無符號整數(shù)版本

5、其它

5.1、isPrint()返回一個字符是否是可打印的,r必須是:字母(廣義)、數(shù)字、標(biāo)點、符號、ASCII空格

res:=strconv.IsPrint('n')  // true 可打印
res:=strconv.IsPrint('\n')  // false  不可打印

5.2、CanBackquote()返回字符串s是否可以不被修改的表示為一個單行的、沒有空格和tab之外控制字符的反引號字符串

	res:=strconv.CanBackquote(`lxx is Nb`) // true
	res:=strconv.CanBackquote(`lxx is
Nb`) // false :因為帶回車
	fmt.Println(res)

到此這篇關(guān)于go語言實現(xiàn)字符串與其它類型轉(zhuǎn)換(strconv包)的文章就介紹到這了,更多相關(guān)go 字符串轉(zhuǎn)換內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家! 

相關(guān)文章

  • golang之判斷元素是否在數(shù)組內(nèi)問題

    golang之判斷元素是否在數(shù)組內(nèi)問題

    這篇文章主要介紹了golang之判斷元素是否在數(shù)組內(nèi)問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2020-12-12
  • Golang高性能持久化解決方案BoltDB數(shù)據(jù)庫介紹

    Golang高性能持久化解決方案BoltDB數(shù)據(jù)庫介紹

    這篇文章主要為大家介紹了Golang高性能持久化解決方案BoltDB數(shù)據(jù)庫介紹,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2021-11-11
  • Golang設(shè)計模式之適配器模式詳細(xì)講解

    Golang設(shè)計模式之適配器模式詳細(xì)講解

    這篇文章主要介紹了使用go實現(xiàn)適配器模式,這個模式就是用來做適配的,它將不兼容的接口轉(zhuǎn)換為可兼容的接口,讓原本由于接口不兼容而不能一起工作的類可以一起工作,需要的朋友可以參考下
    2023-01-01
  • GO語言并發(fā)編程之互斥鎖、讀寫鎖詳解

    GO語言并發(fā)編程之互斥鎖、讀寫鎖詳解

    這篇文章主要介紹了GO語言并發(fā)編程之互斥鎖、讀寫鎖詳解,本文是GO并發(fā)編程實戰(zhàn)一書的樣章,詳細(xì)講解了互斥鎖、讀寫鎖,然后給出了一個完整示例,需要的朋友可以參考下
    2014-11-11
  • Go 語言的指針的學(xué)習(xí)筆記

    Go 語言的指針的學(xué)習(xí)筆記

    這篇文章主要介紹了Go 語言的指針的學(xué)習(xí)筆記,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-09-09
  • Go使用select切換協(xié)程入門詳解

    Go使用select切換協(xié)程入門詳解

    這篇文章主要為大家介紹了Go使用select切換協(xié)程入門詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • 用Go語言編寫一個簡單的分布式系統(tǒng)

    用Go語言編寫一個簡單的分布式系統(tǒng)

    這篇文章主要介紹了用Go語言編寫一個簡單的分布式系統(tǒng),文中的代碼示例講解的非常詳細(xì),對我們的學(xué)習(xí)或工作有一定的幫助,感興趣的小伙伴跟著小編一起來看看吧
    2023-08-08
  • Go語言切片前或中間插入項與內(nèi)置copy()函數(shù)詳解

    Go語言切片前或中間插入項與內(nèi)置copy()函數(shù)詳解

    這篇文章主要介紹了Go語言切片前或中間插入項與內(nèi)置copy()函數(shù)詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • Golang 串口通信的實現(xiàn)示例

    Golang 串口通信的實現(xiàn)示例

    串口通信是一種常見的硬件通信方式,用于在計算機(jī)和外部設(shè)備之間傳輸數(shù)據(jù),本文主要介紹了Golang 串口通信的實現(xiàn)示例,具有一定的參考價值,感興趣的可以了解一下
    2024-03-03
  • gorm update傳入struct對象,零值字段不更新的解決方案

    gorm update傳入struct對象,零值字段不更新的解決方案

    這篇文章主要介紹了gorm update傳入struct對象,零值字段不更新的解決方案,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04

最新評論