Golang字符串转换
在Golang中如何将int类型转换为字符串?有哪些方法可以实现,比如strconv.Itoa和fmt.Sprintf,它们之间有什么区别?哪种方法的性能更好?另外,如果转换失败会有什么错误处理方式?
2 回复
Golang字符串转换常用方法:
- 字符串转数字:strconv.Atoi()
- 数字转字符串:strconv.Itoa()
- 类型转换:string()、[]byte()
- 格式化:fmt.Sprintf() 注意编码和错误处理。
更多关于Golang字符串转换的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
在Go语言中,字符串转换主要涉及以下几种常见情况:
1. 字符串与基本类型互转
使用 strconv 包进行字符串与整数、浮点数等基本类型的转换。
示例代码:
package main
import (
"fmt"
"strconv"
)
func main() {
// 字符串转整数
numStr := "123"
num, _ := strconv.Atoi(numStr) // 返回 (int, error)
fmt.Println(num) // 输出: 123
// 整数转字符串
numInt := 456
str := strconv.Itoa(numInt)
fmt.Println(str) // 输出: "456"
// 字符串转浮点数
floatStr := "3.14"
f, _ := strconv.ParseFloat(floatStr, 64)
fmt.Println(f) // 输出: 3.14
}
2. 字符串与字节切片([]byte)互转
字符串本质是只读的字节切片,可直接转换。
示例代码:
package main
import "fmt"
func main() {
// 字符串转字节切片
s := "hello"
bytes := []byte(s)
fmt.Println(bytes) // 输出: [104 101 108 108 111]
// 字节切片转字符串
str := string(bytes)
fmt.Println(str) // 输出: "hello"
}
3. 字符串与符文切片([]rune)互转
用于处理Unicode字符(如中文)。
示例代码:
package main
import "fmt"
func main() {
// 字符串转符文切片
s := "你好"
runes := []rune(s)
fmt.Println(runes) // 输出: [20320 22909]
// 符文切片转字符串
str := string(runes)
fmt.Println(str) // 输出: "你好"
}
4. 类型断言(接口类型转换)
适用于接口类型向具体类型的转换。
示例代码:
package main
import "fmt"
func main() {
var i interface{} = "hello"
s, ok := i.(string)
if ok {
fmt.Println(s) // 输出: "hello"
}
}
注意事项:
- 使用
strconv时注意处理错误(如转换失败)。 - 字符串与
[]byte/[]rune的转换会复制数据,考虑性能时可避免频繁转换。
根据具体需求选择合适的转换方式即可。

