Go語言中strconv包實作了基本資料型別和其字串表示的相互轉換,
strconv包
strconv包實作了基本資料型別與其字串表示的轉換,主要有以下常用函式: Atoi()、Itia()、parse系列、format系列、append系列,
更多函式請查看官方檔案,
string與int型別轉換
這一組函式是我們平時編程中用的最多的,
Atoi()
Atoi()函式用于將字串型別的整數轉換為int型別,函式簽名如下,
func Atoi(s string) (i int, err error)
如果傳入的字串引數無法轉換為int型別,就會回傳錯誤,
s1 := "100"
i1, err := strconv.Atoi(s1)
if err != nil {
fmt.Println("can't convert to int")
} else {
fmt.Printf("type:%T value:%#v\n", i1, i1) //type:int value:100
}
Itoa()
Itoa()函式用于將int型別資料轉換為對應的字串表示,具體的函式簽名如下,
func Itoa(i int) string
示例代碼如下:
i2 := 200
s2 := strconv.Itoa(i2)
fmt.Printf("type:%T value:%#v\n", s2, s2) //type:string value:"200"
a的典故
【擴展閱讀】這是C語言遺留下的典故,C語言中沒有string型別而是用字符陣列(array)表示字串,所以Itoa對很多C系的程式員很好理解,
Parse系列函式
Parse類函式用于轉換字串為給定型別的值:ParseBool()、ParseFloat()、ParseInt()、ParseUint(),
ParseBool()
func ParseBool(str string) (value bool, err error)
回傳字串表示的bool值,它接受1、0、t、f、T、F、true、false、True、False、TRUE、FALSE;否則回傳錯誤,
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但不接受正負號,用于無符號整型,
ParseFloat()
func ParseFloat(s string, bitSize int) (f float64, err error)
決議一個表示浮點數的字串并回傳其值,
如果s合乎語法規則,函式會回傳最為接近s表示值的一個浮點數(使用IEEE754規范舍入),
bitSize指定了期望的接收型別,32是float32(回傳值可以不改變精確值的賦值給float32),64是float64;
回傳值err是*NumErr型別的,語法有誤的,err.Error=ErrSyntax;結果超出表示范圍的,回傳值f為±Inf,err.Error= ErrRange,
代碼示例
b, err := strconv.ParseBool("true")
f, err := strconv.ParseFloat("3.1415", 64)
i, err := strconv.ParseInt("-2", 10, 64)
u, err := strconv.ParseUint("2", 10, 64)
這些函式都有兩個回傳值,第一個回傳值是轉換后的值,第二個回傳值為轉化失敗的錯誤資訊,
Format系列函式
Format系列函式實作了將給定型別資料格式化為string型別資料的功能,
FormatBool()
func FormatBool(b bool) string
根據b的值回傳”true”或”false”,
FormatInt()
func FormatInt(i int64, base int) string
回傳i的base進制的字串表示,base 必須在2到36之間,結果中會使用小寫字母’a’到’z’表示大于10的數字,
FormatUint()
func FormatUint(i uint64, base int) string
是FormatInt的無符號整數版本,
FormatFloat()
func FormatFloat(f float64, fmt byte, prec, bitSize int) string
函式將浮點數表示為字串并回傳,
bitSize表示f的來源型別(32:float32、64:float64),會據此進行舍入,
fmt表示格式:’f’(-ddd.dddd)、’b’(-ddddp±ddd,指數為二進制)、’e’(-d.dddde±dd,十進制指數)、’E’(-d.ddddE±dd,十進制指數)、’g’(指數很大時用’e’格式,否則’f’格式)、’G’(指數很大時用’E’格式,否則’f’格式),
prec控制精度(排除指數部分):對’f’、’e’、’E’,它表示小數點后的數字個數;對’g’、’G’,它控制總的數字個數,如果prec 為-1,則代表使用最少數量的、但又必需的數字來表示f,
代碼示例
s1 := strconv.FormatBool(true) s2 := strconv.FormatFloat(3.1415, 'E', -1, 64) s3 := strconv.FormatInt(-2, 16) s4 := strconv.FormatUint(2, 16)
其他
isPrint()
func IsPrint(r rune) bool
回傳一個字符是否是可列印的,和unicode.IsPrint一樣,r必須是:字母(廣義)、數字、標點、符號、ASCII空格,
CanBackquote()
func CanBackquote(s string) bool
回傳字串s是否可以不被修改的表示為一個單行的、沒有空格和tab之外控制字符的反引號字串,
其他
除上文列出的函式外,strconv包中還有Append系列、Quote系列等函式,具體用法可查看官方檔案,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/43054.html
標籤:Go
上一篇:Go語言標準庫之net/http
下一篇:Go語言檔案操作
