工作中有时会因为不严谨和疏忽(也可能是保留了之前写C的习惯),有时会犯一些坑爹的小错误,如int转string时,居然会用强制类型转换去做,导致转换后的结果是奇怪的字符,对比示例如下:
/*
1.数值类型和string类型之间的相互转换可能造成值部分丢失;其他的转换仅是类型的转换,不会造成值的改变;
2.string和数字之间转换可使用标准库strconv;
3.x是一个字符串,T是[]byte或 []rune。这种情况下可以用string(): []byte -> string
*/
func main() {
// TestTypeConversion
n := 97
n1 := string(n)
n2 := strconv.Itoa(n)
fmt.Println("sting(n): ", n1) // 错误示例: 输出是97对应的asc码值a
fmt.Println("strconv.Itoa(n): ", n2) // 正确示例: 输出是"97"
}
总结:
1.数值类型和string类型之间的相互转换可能造成值部分丢失;其他的转换仅是类型的转换,不会造成值的改变;
2.string和数字之间转换可使用标准库strconv;
3.或者想要转换byte数组([]byte或 []rune)为string字符串类型,这种情况下可以用string(): []byte -> string
本文探讨了在Go语言中进行类型转换时可能出现的问题,特别是从整数类型到字符串类型的转换。文章通过实例展示了不当的类型转换可能导致的结果差异,并推荐了使用标准库strconv进行正确的转换。

502

被折叠的 条评论
为什么被折叠?



