工作中有时会因为不严谨和疏忽(也可能是保留了之前写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