Go语言中的数字解析


Go语言中的数字解析是指将以**字符串**形式存在的数字转换为**数字**形式。数字形式指的是这些数字可以转换为整数、浮点数等。

Go语言库提供的最常用的数字解析包是“**strconv**”包。Go语言中的数字解析有很多情况,我们将在本文中逐一讲解。

最基本的方法是当我们有一个实际上以字符串形式存在的十进制数,并且想要将其转换为整数时。为此,我们可以使用最常用的**Atoi()**函数。

Atoi()函数的语法如下所示。

result, error := strconv.Atoi(String)

现在,假设我们有一个字符串,其值为“191”,我们想将其转换为整数。

示例

请考虑以下代码。

package main
import (
   "fmt"
   "strconv"
)
func main() {
   var value string = "123"
   res, err := strconv.Atoi(value)
   if err != nil {
      fmt.Println("Error encountered:", err)
      return
   }
   fmt.Println("The number now is:", res)
   fmt.Printf("The type of the number is: %T", res)
}

输出

如果我们使用命令**go run main.go**运行代码,那么我们将在终端看到以下输出。

The number now is: 123
The type of the number is: int

现在,第二种最常见的数字解析是当我们想要将以字符串形式存在的数字转换为64位数字时。为此,我们可以使用**strconv**包中自带的**ParseInt()**或**ParseFloat()**函数。

让我们考虑这两个函数的示例,因为当我们想要解析浮点数时使用其中一个函数,当我们想要传递64位整数值时使用另一个函数。

ParseInt()函数的语法

number, error := strconv.ParseInt(string, base, bitSize)

ParseFloat()函数的语法

number, error := strconv.ParseFloat(string, bitSize)

示例2

在这个例子中,我们将同时使用**ParseInt()**和**ParseFloat()**函数。

package main
import (
   "fmt"
   "strconv"
)
func main() {
   var value string = "123"
   var value1 string = "1.23"
   res, err := strconv.ParseInt(value, 0, 64)
   if err != nil {
      fmt.Println("Error encountered:", err)
      return
   }
   fmt.Println("The number now is:", res)
   fmt.Printf("The type of the number is: %T \n", res)
   res1, err1 := strconv.ParseFloat(value1, 64)
   if err1 != nil {
      fmt.Println("Error encountered:", err1)
      return
   }
   fmt.Println("The number now is:", res1)
   fmt.Printf("The type of the number is: %T", res1)
}

输出

如果我们使用命令**go run main.go**运行代码,那么我们将在终端看到以下输出。

The number now is: 123
The type of the number is: int64
The number now is: 1.23
The type of the number is: float64

关于**ParseInt()**函数需要注意的一点是,它也可以识别十六进制格式的数字。

假设我们有一个十六进制数“**0x1F3**”,它以字符串形式存在,我们想将其转换为整数。为此,我们只能使用**ParseInt()**函数。

示例3

请考虑以下代码。

package main
import (
   "fmt"
   "strconv"
)
func main() {
   var value string = "0x1F3"
   res, err := strconv.ParseInt(value, 0, 64)
   if err != nil {
      fmt.Println("Error encountered:", err)
      return
   }
   fmt.Println("The number now is:", res)
   fmt.Printf("The type of the number is: %T \n", res)
}

输出

如果我们使用命令**go run main.go**运行代码,那么我们将在终端看到以下输出。

The number now is: 499
The type of the number is: int64

更新于:2022年2月21日

677 次浏览

开启你的职业生涯

通过完成课程获得认证

开始学习
广告