Go语言字符串转数字
Go语言中的 Parse 类函数的主要功能就是将字符串转换为其他数字类型, 常用的 Parse 类函数如下表所示。
接下来通过一个示例来演示一下 Parse 类函数的使用,代码如下所示。
声明:《Go系列教程》为本站“54笨鸟”官方原创,由国家机构和地方版权局所签发的权威证书所保护。
方法 | 功能描述 |
---|---|
func Atoi(s string)(int, error) | 将字符串类型转换为整型 |
func ParseInt(s string, base int, bitSize int)(i int64, err error) | ParseInt 将字符串解析成数字,base 表示进制(2 到 36)。如果 base 为 0,则会从字符串前缀判断,"0x"表示十六进制,"0"表示八进制,否则就是十进制。bitSize 指定结果必须是能无溢出赋值的整数类型,0、8、16、32、64 分别代表 int、int8、int16、int32、int64 |
func ParseUint(s string, base int, bitSize int)(uint64, error) | ParseUint 类似 ParseInt,但是用于无符号数字 |
finc ParseFloat(s string, bitSize int)(float64, error) | ParseFloat 解析一个表示浮点数的字符串并返回其值,如果字符串 s 符合语法规则,函数会返回最为接近 s 值的一个浮点数,精度由 bitSize 指定,float32 的精度为 64,float64 的精度为 64,当 bitSize=32 时,结果仍然可以是 float64 类型,但也可以在不更改其值的情况下将其类型转换为 float32 |
func ParseBool(str string)(bool, error) | ParseBool 返回字符串表示的布尔值。它接受 1、t、T、TRUE、true、True、0、f、F、FALSE、false、False。任何其他值都会返回错误 |
接下来通过一个示例来演示一下 Parse 类函数的使用,代码如下所示。
package main import( "strconv" "fmt" ) func main(){ TestAtoi() TestParseInt() TestParseUint() TestParseFloat() TestParseBool() } //将字符串类型转换为int类型 func TestAtoi(){ a, _ := strconv.Atoi("100") fmt.Printf("%T, %v \n", a, a+2) fmt.Println("-----------------") } //解释给定基数(2到36)的字符串s并返回相应的值i func TestParseInt(){ num, _ := strconv.ParseInt("-4e00", 16, 64) fmt.Printf("%T, %v \n", num, num) num, _ = strconv.ParseInt("01100001", 2, 64) fmt.Printf("%T, %v \n", num, num) num, _ = strconv.ParseInt("-01100001", 10, 64) fmt.Printf("%T, %v \n", num, num) num, _ = strconv.ParseInt("4e00", 10, 64) fmt.Printf("%T, %v \n", num, num) fmt.Println("-----------------") } //ParseUint类似ParseInt, 但是用于无符号数字 func TestParseUint(){ num, _ := strconv.ParseUint("4e00", 16, 64) fmt.Printf("%T, %v \n", num, num) num, _ = strconv.ParseUint("01100001", 2, 64) fmt.Printf("%T, %v \n", num, num) num, _ = strconv.ParseUint("-1100001", 10, 64) fmt.Printf("%T, %v \n", num, num) num, _ = strconv.ParseUint("4e00", 10, 64) fmt.Printf("%T, %v \n", num, num) fmt.Println("-----------------") } //ParseFloat 将字符串s转换为float类型 func TestParseFloat(){ pi := "3.1415926" num, _ := strconv.ParseFloat(pi, 64) fmt.Printf("%T, %v\n", num, num*2) fmt.Println("-----------------") } //将字符串转换为bool类型 func TestParseBool(){ flag, _ := strconv.ParseBool("steven") fmt.Printf("%T, %v \n", flag, flag) fmt.Println("-----------------") }运行结果如下:
int, 102
-----------------
int64, -19968
int64, 97
int64, -1100001
int64, 0
-----------------
uint64, 19968
uint64, 97
uint64, 0
uint64, 0
-----------------
float64, 6.2831852
-----------------
bool, false
-----------------
声明:《Go系列教程》为本站“54笨鸟”官方原创,由国家机构和地方版权局所签发的权威证书所保护。