Golang字符串转整数方法

在Golang中如何将字符串转换为整数?strconv包的Atoi和ParseInt函数有什么区别?哪种方法更高效?转换失败时该如何处理错误?请给出示例代码说明最佳实践。

2 回复

使用strconv.Atoi函数:

num, err := strconv.Atoi("123")
if err != nil {
    // 处理错误
}

或使用strconv.ParseInt

num, err := strconv.ParseInt("123", 10, 64)

更多关于Golang字符串转整数方法的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


在Golang中,将字符串转换为整数主要有以下几种方法:

1. strconv.Atoi() - 最常用

package main

import (
    "fmt"
    "strconv"
)

func main() {
    str := "123"
    num, err := strconv.Atoi(str)
    if err != nil {
        fmt.Println("转换错误:", err)
        return
    }
    fmt.Printf("字符串 '%s' 转换为整数: %d\n", str, num)
}

2. strconv.ParseInt() - 支持进制和位宽

package main

import (
    "fmt"
    "strconv"
)

func main() {
    // 十进制
    str1 := "255"
    num1, _ := strconv.ParseInt(str1, 10, 64)
    
    // 十六进制
    str2 := "FF"
    num2, _ := strconv.ParseInt(str2, 16, 64)
    
    // 二进制
    str3 := "1010"
    num3, _ := strconv.ParseInt(str3, 2, 64)
    
    fmt.Printf("%s -> %d\n", str1, num1) // 255 -> 255
    fmt.Printf("%s -> %d\n", str2, num2) // FF -> 255
    fmt.Printf("%s -> %d\n", str3, num3) // 1010 -> 10
}

3. fmt.Sscanf() - 格式化扫描

package main

import "fmt"

func main() {
    str := "456"
    var num int
    _, err := fmt.Sscanf(str, "%d", &num)
    if err != nil {
        fmt.Println("转换错误:", err)
        return
    }
    fmt.Printf("转换结果: %d\n", num)
}

主要区别:

  • strconv.Atoi():最简单,只支持十进制
  • strconv.ParseInt():功能最全,支持任意进制和位宽
  • fmt.Sscanf():适合复杂格式的字符串解析

推荐使用 strconv.Atoi() 进行常规的十进制字符串转整数操作,因为它简洁高效且易于使用。

回到顶部