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
[]byte转string
Res := string(bytes)
string转[]byte
[]byte(str)