Go如何进行类型转换?

发布时间:2023-06-25 08:30

一般来讲,使用 v1 := T(v) 这个通用方法进行转换即可。但实际使用过程中往往不止这一种转换方式,同时也有一些注意事项,现总结如下。

版本:Go 1.14

数字字符串的相互转换

数字字符串

初始变量:

var i int = 97
var i64 int64 = 97
var f32 float32 = 97.02
var f64 float64 = 97.02
原类型 目标类型 转换方法 结果&备注
int string string(i) "a"。该方法将97当做ASCII/UTF8码值,无法得到预期的"97"
int string strconv.Itoa(i) "97"
int string strconv.FormatInt(int64(i), 10) "97"
int string fmt.Sprintf("%d", i) "97"
int64 string string(i64) "a"。该方法将97当做ASCII/UTF8码值,无法得到预期的"97"
int64 string strconv.Itoa(int(i64)) "97"
int64 string strconv.FormatInt(i64, 10) "97"
int64 string fmt.Sprintf("%d", i64) "97"
其他整型 string
float32 string strconv.FormatFloat(float64(f32), 'f', 10, 32) "97.0199966431"
float32 string fmt.Sprintf("%f", f32) 97.019997
float64 string strconv.FormatFloat(f64, 'f', 10, 64) "97.0200000000"
float32 string fmt.Sprintf("%f", f64) 97.020000

字符串数字

初始变量:

var s1 string = "97"
var s2 string = "97.02"
原类型 目标类型 转换方法 结果&备注
string int strconv.Atoi(s1) 97。对于strconv.Atoi(s2)会报错strconv.Atoi: parsing "97.02": invalid syntax并返回0
string int strconv.ParseInt(s1, 10, 0) 不符合预期,结果期望是int类型,实际上是int64类型。另外,对于strconv.ParseInt(s2, 10, 0)会报错strconv.ParseInt: parsing "97.02": invalid syntax,并返回0
string int64 strconv.ParseInt(s1, 10, 64) 97
string float32 strconv.ParseFloat(s2, 64) 97.02

ItVuer - 免责声明 - 关于我们 - 联系我们

本网站信息来源于互联网,如有侵权请联系:561261067@qq.com

桂ICP备16001015号