strconv包實現了基本數據類型與其字符串表示的轉換,主要有如下經常使用函數:Atoi(),Itia(),parse系列,format系列,append系列。
Atoi()函數用於將字符串類型的整數轉換爲int類型 func Atoi(s string) (i int, err error) 若是傳入的字符串參數沒法轉換爲Int類型,就會返回錯誤。
package main import ( "fmt" "strconv" ) func main() { s1 := "100" i1,err := strconv.Atoi(s1) if err != nil{ fmt.Println("can not convert to int") }else{ fmt.Printf("type:%T value:%#v\n",i1,i1) } } 結果: type:int value:100 Process finished with exit code 0
Itoa()函數用於將int累心數據轉換爲對應的字符串表示。 func Itoa(i int) string
package main import ( "fmt" "strconv" ) func main() { i1 := 100 s1 := strconv.Itoa(i1) fmt.Printf("type:%T value:%#v\n",s1,s1) } 結果: type:string value:"100" Process finished with exit code 0
a的典故: 【擴展閱讀】這是C語言遺留下的典故。C語言中沒有string類型而是用字符數組(array)表示字符串,因此Itoa對不少C系的程序員很好理解。
Parse系列函數用於轉換字符串爲給定類型的值:ParseBool(),ParseFloat(),ParseInt(),ParseUint()。
func ParseBool(str string) (value bool, err error) 返回字符串表示的bool值。它接收1,0,t,f,T,F,true,True,False,TRUE,FALSE;不然返回錯誤。
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。
func ParseUint(s string, base int, bitSize int) (n uint64, err error) ParseUint相似ParseInt但不接受正負號,用於無符號整型。
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。
package main import ( "fmt" "strconv" ) func main() { b, _ := strconv.ParseBool("true") fmt.Println(b) f, _ := strconv.ParseFloat("3.1415", 64) fmt.Println(f) i, _ := strconv.ParseInt("-2", 10, 64) fmt.Println(i) u, _ := strconv.ParseUint("2", 10, 64) fmt.Println(u) } 結果: true 3.1415 -2 2 Process finished with exit code 0
Format系列函數實現了將給定類型數據格式化爲string類型數據的功能。
func FormatBool(b bool) string 根據b的值返回」true」或」false」。
func FormatInt(i int64, base int) string 返回i的base進制的字符串表示。base 必須在2到36之間,結果中會使用小寫字母’a’到’z’表示大於10的數字。
func FormatUint(i uint64, base int) string 是FormatInt的無符號整數版本。
func FormatFloat(f float64, fmt byte, prec, bitSize int) string bitSize表示f的來源類型(32:float3二、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。
package main import ( "fmt" "strconv" ) func main() { s1 := strconv.FormatBool(true) s2 := strconv.FormatFloat(3.1415, 'E', -1, 64) s3 := strconv.FormatInt(-2, 16) s4 := strconv.FormatUint(2, 16) fmt.Printf("Type:%T value:%#v\n",s1,s1) fmt.Printf("Type:%T value:%#v\n",s2,s2) fmt.Printf("Type:%T value:%#v\n",s3,s3) fmt.Printf("Type:%T value:%#v\n",s4,s4) } 結果: Type:string value:"true" Type:string value:"3.1415E+00" Type:string value:"-2" Type:string value:"2" Process finished with exit code 0
func IsPrint(r rune) bool 返回一個字符是不是可打印的,和unicode.IsPrint同樣,r必須是:字母(廣義)、數字、標點、符號、ASCII空格。
func CanBackquote(s string) bool 返回字符串s是否能夠不被修改的表示爲一個單行的、沒有空格和tab以外控制字符的反引號字符串。
其餘用法能夠查看官方文檔:https://golang.org/pkg/strconv/程序員