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的转换会复制数据,考虑性能时可避免频繁转换。 
根据具体需求选择合适的转换方式即可。
        
      
                    
                    
                    
