捋一捋Go語言的一個類型轉換工具包strconv包
前言
Hey,大家好,我是碼農,星期八,這次咱們來學一下Go語言的一個類型轉換工具包strconv。
不知道你有沒有想過。
在Go中,字符串100如何轉成數字100。
這樣?
- func main() {
- var score = "100"
- i := int(score)
- fmt.Printf(i)
- }
No,No,No,看一下執行結果。
報錯啦,說明并不是這么簡單粗暴轉換的!!!
string轉int(用Atoi)
代碼
- func main() {
- //string 100
- var scoreStr = "100"
- fmt.Printf("%v,%T\n", scoreStr, scoreStr) //100,string
- score, err := strconv.Atoi(scoreStr)
- //轉換失敗
- if err != nil {
- panic(err)
- }
- fmt.Printf("%v,%T\n", score, score)
- }
執行結果

可以發現,轉換成功之后,就成了int類型。
int轉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)
- }
執行結果

注:在Go中,只能通過上述兩種方式進行string -> int,int -> string。
strconv.Parse轉換
strconv的Parse相關方法,也是講string類型轉換為其他類型,但是相比之下。
strconv的Parse的多樣性會多一點。
strconv.ParseBool()
這個方法,是將字符串的Bool類型,轉成真正的Bool類型。
示例代碼
- func main() {
- var tString = "true"//可以是 1,0,t,f,T,F,true,false,True,False,TRUE,FALSE
- fmt.Printf("%T,%v\n", tString, tString)
- tBool, err := strconv.ParseBool(tString)
- if err != nil {
- panic(err)
- }
- fmt.Printf("%T,%v\n", tBool, tBool)
- }
執行結果
成功將字符串true轉成Bool true。
strconv.ParseInt()
這個,就很簡單了,跟strconv.Atoi()基本一樣。
示例代碼
- func main() {
- var tString = "666"
- fmt.Printf("%T,%v\n", tString, tString)
- tInt, err := strconv.ParseInt(tString,10,64)
- if err != nil {
- panic(err)
- }
- fmt.Printf("%T,%v\n", tInt, tInt)
- }
執行結果

第二個參數10和第三個參數64的意思。
可能你同我一樣,剛開始不明白第二個參數10和第三個參數64的意思。
但是下面一張圖,可能你就懂了。
理解就好,一般情況下,寫成上述代碼就行,本來就是轉int的,想那么多干嘛!!!
strconv.parseUint()
同上,但是這個只能轉正數,不能轉負數。
strconv.ParseFloat()
這個,看名字就知道是將字符串浮點數轉真正的浮點數咯。
示例代碼
- 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)
- }
第二個參數64,同上,也是因為返回的就是float64,所以容量也得是64。
執行結果

strconv.Format轉換
這個和strconv.Parse是相反的,是將int/float/bool等 -> string的一個過程。
但是我總感覺有點脫褲子放屁的感覺,既然官方提供了,就隨便看看叭!!!
這里我就使用簡述的代碼來寫的。
- func main() {
- a := strconv.FormatBool(true)
- //E表示十進制,
- 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)
- }
執行結果

總結
其實這次我們的重點主要是前倆,string - > int(用Atoi),int -> string(用Itoa)。
其他的主要分為strconv.Parse系列和strconv.Format系列。
相對來說Parse系列可能會用的更多一點,Format相關使用的不是太多,了解就好!
總之,不管怎么樣,都要敲一下代碼。
想學習更多關于Python的知識,可以參考學習網址:http://pdcfighting.com/,點擊閱讀原文,可以直達噢~