轉換方法:1、用Atoi(),可將字串型別的整數轉換為int型別,語法「strconv.Atoi(str)」;2、用ParseInt(),可將字串轉換為整數值,接受正負號,語法「strconv.ParseInt(str,10,64)」;3、用ParseUnit(),可將字串轉換為整數值,不接受正負號,語法「strconv.ParseUint(str,10,64)」。
本教學操作環境:windows7系統、GO 1.18版本、Dell G3電腦。
Go語言中strconv包實現了基本資料型別和其字串表示的相互轉換。
strconv包實現了基本資料型別與其字串表示的轉換,主要有以下常用函數: Atoi()、Itia()、parse系列、format系列、append系列。
下面介紹一下將字串轉為整型的幾個函數。
Atoi()
Atoi()
函數用於將字串型別的整數轉換為int型別,函數簽名如下。
func Atoi(s string) (i int, err error)
登入後複製
如果傳入的字串引數無法轉換為int型別,就會返回錯誤。
package main
import "fmt"
import "strconv"
func main() {
s1 := "100"
i, err := strconv.Atoi(s1)
if err != nil {
fmt.Println("can't convert to int")
} else {
fmt.Printf("type:%T value:%#v\n", i, i) //type:int value:100
}
}
登入後複製
Parse系列函數
Parse類函數用於轉換字串為給定型別的值:ParseBool()、ParseFloat()、ParseInt()、ParseUint()。其中ParseInt()和ParseUnit()用於字串轉整型。
ParseInt()
ParseInt()是將字串轉換為數位的函數
func ParseInt(s string, base int, bitSize int) (i int64, err error)
登入後複製
返回字串表示的整數值,接受正負號。
base指定進位制(2到36),如果base為0,則會從字串前置判斷,」0x」是16進位制,」0」是8進位制,否則是10進位制;
bitSize指定結果必須能無溢位賦值的整數型別,0、8、16、32、64 分別代表 int、int8、int16、int32、int64;
返回的err是*NumErr型別的,如果語法有誤,err.Error = ErrSyntax;如果結果超出型別範圍err.Error = ErrRange。
ParseUnit()
func ParseUint(s string, base int, bitSize int) (n uint64, err error)
登入後複製
ParseUint類似ParseInt但不接受正負號,用於無符號整型。
範例:
package main
import "fmt"
import "strconv"
func main() {
i, err1 := strconv.ParseInt("-2", 10, 64)
u, err2 := strconv.ParseUint("2", 10, 64)
if err1 != nil {
fmt.Println("can't convert to int")
} else {
fmt.Printf("type:%T value:%#v\n", i, i) //type:int64 value:2
}
if err2 != nil {
fmt.Println("can't convert to int")
} else {
fmt.Printf("type:%T value:%#v\n", u, u) //type:uint64 value:0x2
}
}
登入後複製
ParseInt()和ParseUnit()函數都有兩個返回值,第一個返回值是轉換後的值,第二個返回值為轉化失敗的錯誤資訊。
擴充套件知識:go中的整型
Go語言同時提供了有符號和無符號的整數型別,其中包括 int8、int16、int32 和 int64 四種大小截然不同的有符號整數型別,分別對應 8、16、32、64 bit(二進位制位)大小的有符號整數,與此對應的是 uint8、uint16、uint32 和 uint64 四種無符號整數型別。
此外還有兩種整數型別 int 和 uint,它們分別對應特定 CPU 平臺的字長(機器字大小),其中 int 表示有符號整數,應用最為廣泛,uint 表示無符號整數。實際開發中由於編譯器和計算機硬體的不同,int 和 uint 所能表示的整數大小會在 32bit 或 64bit 之間變化。
大多數情況下,我們只需要 int 一種整型即可,它可以用於迴圈計數器(for 迴圈中控制迴圈次數的變數)、陣列和切片的索引,以及任何通用目的的整型運運算元,通常 int 型別的處理速度也是最快的。
用來表示 Unicode 字元的 rune 型別和 int32 型別是等價的,通常用於表示一個 Unicode 碼點。這兩個名稱可以互換使用。同樣,byte 和 uint8 也是等價型別,byte 型別一般用於強調數值是一個原始的資料而不是一個小的整數。
最後,還有一種無符號的整數型別 uintptr,它沒有指定具體的 bit 大小但是足以容納指標。uintptr 型別只有在底層程式設計時才需要,特別是Go語言和C語言函數庫或作業系統介面相互動的地方。
儘管在某些特定的執行環境下 int、uint 和 uintptr 的大小可能相等,但是它們依然是不同的型別,比如 int 和 int32,雖然 int 型別的大小也可能是 32 bit,但是在需要把 int 型別當做 int32 型別使用的時候必須顯示的對型別進行轉換,反之亦然。
Go語言中有符號整數採用 2 的二補數形式表示,也就是最高 bit 位用來表示符號位,一個 n-bit 的有符號數的取值範圍是從 -2(n-1) 到 2(n-1)-1。無符號整數的所有 bit 位都用於表示非負數,取值範圍是 0 到 2n-1。例如,int8 型別整數的取值範圍是從 -128 到 127,而 uint8 型別整數的取值範圍是從 0 到 255。
【相關推薦:Go視訊教學、】
以上就是golang怎麼將字串轉為整型的詳細內容,更多請關注TW511.COM其它相關文章!