一般来讲,使用 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 |
数字
与数字
的相互转换
初始变量:
var i int = 97 var i64 int64 = 97 var f32 float32 = 97.02 var f64 float64 = 97.02
原类型 | 目标类型 | 转换方法 | 结果&备注 |
---|---|---|---|
int | int64 | int64(i) | 97 |
int | float32 | float32(i) | 97 |
int | float64 | float64(i) | 97 |
int64 | int | int(i64) | 97 |
int64 | float32 | float32(i64) | 97 |
int64 | float64 | float64(i64) | 97 |
float32 | int | int(f32) | 97 |
float32 | int64 | int64(f32) | 97 |
float32 | float64 | float64(f32) | 97.0199966430664 |
float64 | int | int(f64) | 97 |
float64 | int64 | int64(f64) | 97 |
float64 | float32 | float32(f64) | 97.02 |
字符串
与字符串
的相互转换
初始变量:
s1 string = "Hello World!" s2 string = "Hello 世界!"
原类型 | 目标类型 | 转换方法 | 结果&备注 |
---|---|---|---|
string | []byte | []byte(s1) | [72 101 108 108 111 32 87 111 114 108 100 33] 。[]byte 类型就是[]uint8 类型。 |
string | []rune | []rune(s2) | [72 101 108 108 111 32 19990 30028 33] 。[]rune 类型就是[]int32 类型。 |
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。