Go語言中strconv
包實現了基本數據類型和其字符串表示的相互轉換。程序員
strconv包實現了基本數據類型與其字符串表示的轉換,主要有如下經常使用函數: Atoi()
、Itia()
、parse系列、format系列、append系列。golang
更多函數請查看官方文檔。編程
這一組函數是咱們平時編程中用的最多的。數組
Atoi()
函數用於將字符串類型的整數轉換爲int類型,函數簽名以下。app
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()
函數用於將int類型數據轉換爲對應的字符串表示,具體的函數簽名以下。ui
func Itoa(i int) string
示例代碼以下:code
i2 := 200 s2 := strconv.Itoa(i2) fmt.Printf("type:%T value:%#v\n", s2, s2) //type:string value:"200"
【擴展閱讀】這是C語言遺留下的典故。C語言中沒有string類型而是用字符數組(array)表示字符串,因此Itoa
對不少C系的程序員很好理解。orm
Parse類函數用於轉換字符串爲給定類型的值:ParseBool()、ParseFloat()、ParseInt()、ParseUint()。unicode
func ParseBool(str string) (value bool, err error)
返回字符串表示的bool值。它接受一、0、t、f、T、F、true、false、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、八、1六、3二、64 分別表明 int、int八、int1六、int3二、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。
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系列函數實現了將給定類型數據格式化爲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。
s1 := strconv.FormatBool(true) s2 := strconv.FormatFloat(3.1415, 'E', -1, 64) s3 := strconv.FormatInt(-2, 16) s4 := strconv.FormatUint(2, 16)
func IsPrint(r rune) bool
返回一個字符是不是可打印的,和unicode.IsPrint
同樣,r必須是:字母(廣義)、數字、標點、符號、ASCII空格。
func CanBackquote(s string) bool
返回字符串s是否能夠不被修改的表示爲一個單行的、沒有空格和tab以外控制字符的反引號字符串。
除上文列出的函數外,strconv
包中還有Append系列、Quote系列等函數。具體用法可查看官方文檔。