go是一种强类型的语言,所以如果在赋值的时候两边类型不一致会报错,就连int都分为int,int8,int32,int64这么多种。

但同一基础类型(int,float)的变量在转换时很简单,都可以通过括号括起来即可,因为他们的底层都是一个类型的。

type (a)
var a int32  = 10
var b int64 = int64(a)

 

常用的还有int和string之间的相互转换,这种就没法直接用type()转换方式了。

最常用的还是strconv包,可以通过包中的方法就行转换。

string转换为其他类型(int,float)用到的是strconv.parse这类方法,包括strconv.ParseInt,strconv.ParseFloat等。

而int64,float转换为string类型用到的就是strconv.Format这类方法,包括strconv.FormatInt,strconv.FormatFloat等。

其中int和int64不一样,他用到的是atoi和itoa。

string转成int:
int, err := strconv.Atoi(string)

int转成string:
string := strconv.Itoa(int)




string转成int64:
int64, err := strconv.ParseInt(string, 10, 64)

int64转成string:
string := strconv.FormatInt(int64,10)


float和string之间的转换也用到了strconv包:

float转string:

func FormatFloat(f float64, fmt byte, prec, bitSize int) string

比如:

num := 250.56
str := strconv.FormatFloat(num, 'f', 4,64)
fmt.Printf("type:%T value:%#v\n", str, str)

输出:type:string value:"250.5600"

其中:

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。