XuLaLa.Tech

首页客户端下载Windows 使用V2Ray 教程SSR 教程Clash 教程

Golang字符串转数字的5种方法

2025.04.09

在Golang开发中,处理字符串和数字之间的转换是常见需求,例如从用户输入中解析数字、处理配置文件等。在本文中,我们将介绍Golang中将字符串转换为数字的五种方法,并结合示例代码进行说明。

文章目录

  • 1 一、使用 strconv.Atoi 转换为整数
    • 1.1 示例代码:
    • 1.2 适用场景:
  • 2 二、使用 strconv.ParseInt 转换为指定进制的整数
    • 2.1 示例代码:
    • 2.2 适用场景:
  • 3 三、使用 strconv.ParseFloat 转换为浮点数
    • 3.1 示例代码:
    • 3.2 适用场景:
  • 4 四、使用 fmt.Sscanf 转换为多种数值类型
    • 4.1 示例代码:
    • 4.2 适用场景:
  • 5 五、使用自定义函数进行转换
    • 5.1 示例代码:
    • 5.2 适用场景:
  • 6 六、总结

一、使用 strconv.Atoi 转换为整数

strconv.Atoi 是最常用的函数之一,用于将字符串转换为整数。如果字符串无法解析为有效的整数,会返回一个错误。

示例代码:

package main
import (
"fmt"
"strconv"
)
func main() {
str := "123"
num, err := strconv.Atoi(str)
if err != nil {
fmt.Println("转换失败:", err)
} else {
fmt.Println("转换结果:", num)
}
}

适用场景:

  • 字符串表示的值为整数且范围不超过 int 类型。

二、使用 strconv.ParseInt 转换为指定进制的整数

strconv.ParseInt 提供了更灵活的功能,可以指定字符串的进制和目标整数的位数(如 int64)。

示例代码:

package main
import (
"fmt"
"strconv"
)
func main() {
str := "1010"
num, err := strconv.ParseInt(str, 2, 64) // 将二进制字符串转换为 int64
if err != nil {
fmt.Println("转换失败:", err)
} else {
fmt.Println("转换结果:", num)
}
}

适用场景:

  • 需要处理不同进制的字符串(如二进制、十六进制等)。
  • 目标类型为 int64

三、使用 strconv.ParseFloat 转换为浮点数

如果字符串表示的是小数或浮点数,可以使用 strconv.ParseFloat。该函数支持 32 位和 64 位精度。

示例代码:

package main
import (
"fmt"
"strconv"
)
func main() {
str := "123.45"
num, err := strconv.ParseFloat(str, 64) // 将字符串解析为 float64
if err != nil {
fmt.Println("转换失败:", err)
} else {
fmt.Println("转换结果:", num)
}
}

适用场景:

  • 字符串表示的小数或浮点数。

四、使用 fmt.Sscanf 转换为多种数值类型

fmt.Sscanf 提供了格式化解析的能力,可以同时解析多种类型的值。

示例代码:

package main
import (
"fmt"
)
func main() {
str := "123 45.67"
var intVal int
var floatVal float64
_, err := fmt.Sscanf(str, "%d %f", &intVal, &floatVal)
if err != nil {
fmt.Println("转换失败:", err)
} else {
fmt.Printf("整数: %d, 浮点数: %f\n", intVal, floatVal)
}
}

适用场景:

  • 从格式化的字符串中解析多个值。

五、使用自定义函数进行转换

在某些特定场景下,字符串格式可能不规范或者需要进行预处理,可以通过自定义函数实现。

示例代码:

package main
import (
"fmt"
"strings"
"strconv"
)
func customStrToInt(str string) (int, error) {
// 去掉字符串中的空格和多余字符
str = strings.TrimSpace(str)
str = strings.ReplaceAll(str, ",", "") // 去掉逗号分隔符
return strconv.Atoi(str)
}
func main() {
str := " 1,234 "
num, err := customStrToInt(str)
if err != nil {
fmt.Println("转换失败:", err)
} else {
fmt.Println("转换结果:", num)
}
}

适用场景:

  • 字符串需要预处理(如去除特殊字符、格式化等)。

六、总结

Golang 提供了多种方法将字符串转换为数字,根据具体需求选择合适的工具:

  1. strconv.Atoi:简单整数转换。
  2. strconv.ParseInt:支持不同进制和更大范围的整数。
  3. strconv.ParseFloat:解析浮点数。
  4. fmt.Sscanf:从格式化字符串中解析值。
  5. 自定义函数:处理复杂或不规范的字符串。

通过熟悉这些方法,开发者可以高效应对不同场景的字符串解析需求!

© 2010-2022 XuLaLa 保留所有权利 本站由 WordPress 强力驱动
请求次数:69 次,加载用时:0.665 秒,内存占用:32.19 MB