Golang 字符串转int
在 Golang 编程中,我们经常会遇到需要将字符串转换为整数的情况。在处理用户输入、文件读取等情形下,字符串转整数是一个常见的操作。本文将详细介绍如何在 Golang 中实现字符串转整数的操作。
库函数 strconv.Atoi()
Golang 提供了方便的库函数 strconv.Atoi()
来实现字符串转整数的操作。该函数的签名如下:
func Atoi(s string) (int, error)
其中,参数 s
是待转换的字符串,函数返回一个整数值和一个错误对象。如果转换成功,返回的整数值为转换后的整数,错误对象为 nil
;如果转换失败,返回的整数值为 0,错误对象为相应的错误信息。
示例代码如下:
package main
import (
"fmt"
"strconv"
)
func main() {
str := "123"
num, err := strconv.Atoi(str)
if err != nil {
fmt.Println("转换失败:", err)
} else {
fmt.Println("转换成功:", num)
}
}
运行上述代码,输出为:
转换成功: 123
自定义实现字符串转int
除了使用 strconv.Atoi()
函数外,我们还可以自己实现字符串转整数的方法。下面是一个自定义的实现方法:
package main
import (
"fmt"
)
func StrToInt(s string) (int, error) {
var num int
var neg bool
for i, c := range s {
if i == 0 && c == '-' {
neg = true
continue
}
if c >= '0' && c <= '9' {
num = num*10 + int(c-'0')
} else {
return 0, fmt.Errorf("非法字符:%c", c)
}
}
if neg {
num = -num
}
return num, nil
}
func main() {
str := "456"
num, err := StrToInt(str)
if err != nil {
fmt.Println("转换失败:", err)
} else {
fmt.Println("转换成功:", num)
}
}
运行上述代码,输出为:
转换成功: 456
性能比较
在性能方面,使用 strconv.Atoi()
函数要比自定义实现的方法要快得多。因为 strconv.Atoi()
函数是经过优化的标准库函数,性能较好。在实际开发中,建议优先使用库函数,以提高代码的性能和稳定性。
总结:本文介绍了在 Golang 中字符串转整数的两种方法,分别是使用 strconv.Atoi()
函数和自定义实现方法。在实际开发中,可以根据具体情况选择合适的方法来实现字符串转整数的操作。