在go語言中經常用到字符串和其它類型進行轉換,strconv包能實現這個功能。
1.string轉int
有兩種方法,可以使用func Atoi(s string) (i int, err error),Atoi代表Ascii to Integer。還可以使用func ParseInt(s string, base int, bitSize int) (i int64, err error),base爲進制,值爲2~36,如果爲0,則會根據字符串自動判斷,前置爲"0x"的是16進制,前置爲"0"的是8進制,其餘的爲10進制,bitSize是返回的整數類型,0、8、16、32分別代表int、int8、int16、int32。
func main() {
a,_:=strconv.Atoi("123456")
fmt.Printf("a values %v\n",a)
b,_:=strconv.ParseInt("123456",10,32)
fmt.Printf("b values %v\n",b)
c,_:=strconv.ParseInt("123456",10,16)
fmt.Printf("c values %v\n",c)
d,_:=strconv.ParseInt("111",2,32)
fmt.Printf("d values %v\n",d)
}
以上代碼會打印出
a values 123456
b values 123456
c values 32767
d values 7
看一下c,由於返回的是int16類型的值,int16類型的值的範圍爲-32768~32767,超過了返回類型的範圍,會被截斷,所以選擇返回值類型時要選擇正確。
2.int轉string
使用func Itoa(i int) string方法,將int類型的轉string類型。
func main() {
var i int = 12345
s:=strconv.Itoa(i)
fmt.Printf("s values %v,type is %T",s,s)
}
以上會輸出
s values 12345,type is string
3.string轉bool
func main(){
fmt.Println(strconv.ParseBool("t"))
fmt.Println(strconv.ParseBool("TRUE"))
fmt.Println(strconv.ParseBool("true"))
fmt.Println(strconv.ParseBool("True"))
fmt.Println(strconv.ParseBool("0"))
fmt.Println(strconv.ParseBool("f"))
}
以上會輸出
true <nil>
true <nil>
true <nil>
true <nil>
false <nil>
false <nil>
4.string轉float
func ParseFloat(s string, bitSize int) (f float64, err error)
mian(){
f,err:=strconv.ParseFloat("20.58",64)
if err!=nil {
panic(err)
}
fmt.Printf("%v,%T",f,f)
}
輸出
20.58,float64
5.float轉string
func FormatFloat(f float64, fmt byte, prec, bitSize int) string
其中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。
mian(){
str:=strconv.FormatFloat(23.5670,'f',-1,64)
str2:=strconv.FormatFloat(23.5670,'f',5,64)
fmt.Println(str)
fmt.Println(str2)
}
輸出
23.567
23.56700