Go语言教程之边写边学:类型转换-如何在Go中将字符串转换为整数类型?

像大多数现代语言一样,Golang 包含字符串作为内置类型。让我们举个例子,你可能有一个包含数值“100”的字符串。但是,由于此值表示为字符串,因此无法对其执行任何数学计算。需要将此字符串类型显式转换为整数类型,然后才能对其执行任何数学计算。为了在Golang中将字符串转换为整数类型,您可以使用以下方法。

 

Atoi()函数

您可以使用strconv包的Atoi()函数将字符串转换为整数值。Atoi 代表 ASCII 到整数。Atoi()函数返回两个值:转换结果和错误(如果有)。

func Atoi(s string) (int, error)
package main

import (
	"fmt"
	"strconv"
	"reflect"
)

func main() {
	strVar := "100"
	intVar, err := strconv.Atoi(strVar)
	fmt.Println(intVar, err, reflect.TypeOf(intVar))
}

输出

100 <nil> int

 

ParseInt()函数

ParseInt解释给定基数(0,2到36)和位大小(0,64)中的字符串s,并返回相应的值i。此函数接受字符串参数,根据基参数将其转换为相应的int类型。默认情况下,它返回Int64值。

func ParseInt(s string, base int, bitSize int) (i int64, err error)
package main

import (
	"fmt"
	"reflect"
	"strconv"
)

func main() {
	strVar := "100"

	intVar, err := strconv.ParseInt(strVar, 0, 8)
	fmt.Println(intVar, err, reflect.TypeOf(intVar))

	intVar, err = strconv.ParseInt(strVar, 0, 16)
	fmt.Println(intVar, err, reflect.TypeOf(intVar))

	intVar, err = strconv.ParseInt(strVar, 0, 32)
	fmt.Println(intVar, err, reflect.TypeOf(intVar))

	intVar, err = strconv.ParseInt(strVar, 0, 64)
	fmt.Println(intVar, err, reflect.TypeOf(intVar))
}

输出

100 <nil> int64
100 <nil> int64
100 <nil> int64
100 <nil> int64

 

使用FMT.Sscan

fmt包提供了Sscan()函数,该函数扫描字符串参数并存储到变量中。此函数读取带有空格的字符串并赋值到连续的整数变量中。

package main

import (
	"fmt"
	"reflect"
)

func main() {
	strVar := "100"
	intValue := 0
	_, err := fmt.Sscan(strVar, &intValue)
	fmt.Println(intValue, err, reflect.TypeOf(intValue))
}

输出

100 <nil> int