Golang字符串转换

在Golang中如何将int类型转换为字符串?有哪些方法可以实现,比如strconv.Itoa和fmt.Sprintf,它们之间有什么区别?哪种方法的性能更好?另外,如果转换失败会有什么错误处理方式?

2 回复

Golang字符串转换常用方法:

  1. 字符串转数字:strconv.Atoi()
  2. 数字转字符串:strconv.Itoa()
  3. 类型转换:string()、[]byte()
  4. 格式化: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 的转换会复制数据,考虑性能时可避免频繁转换。

根据具体需求选择合适的转换方式即可。

回到顶部