Go语言中int、float、string类型之间相互的转换

Go语言中int、float、string类型之间相互的转换

目录

前言

整形转字符串

fmt.Sprintf

使用方法

strconv.Itoa

使用方法

strconv.FormatInt

入参

使用方法

浮点型转字符串

fmt.Sprintf

入参

使用方法

字符串转整形

strconv.Atoi

使用方法

strconv.ParseInt

使用方法

字符串转浮点型

strconv.ParseFloat

使用方法

总结

前言

Go 开发中经常设计到类型转换,本文就重点记录下 整形、浮点型和字符串类型互相转换的方法。

整形转字符串 fmt.Sprintf

将整数转为字符串,字符串可以是2进制、8进制、10进制或者16进制的表示。

格式描述
%b整型以二进制方式显示
%o整型以八进制方式显示
%d整型以十进制方式显示
%x整型以十六进制方式显示
%X整型以十六进制、字母大写方式显示
使用方法 fmt.Sprintf("%d", int32(111)) // 111 fmt.Sprintf("%d", int64(111)) // 111 fmt.Sprintf("%d", 111) // 111 fmt.Sprintf("%b", 10) // 1010 strconv.Itoa

将 int 类型的整数 转为 10进制的字符串表示,底层调用的就是下一个方法: FormatInt(int64(i), 10)

// Itoa is equivalent to FormatInt(int64(i), 10). func Itoa(i int) string { return FormatInt(int64(i), 10) } 使用方法

我们可以把int32、int64 先转为 int,然后再使用该方法转换

strconv.Itoa(1123) // 1123 strconv.FormatInt

将整数转为字符串,字符串可选2到36进制的字符串表示。

入参

i: int64类型的整数

base: 表示要转为的进制,支持2到36进制,使用最多的就是转为10进制

func FormatInt(i int64, base int) string {} 使用方法

我们可以把int32、int 先转为 int64,然后再使用该方法转换

strconv.FormatInt(123, 10) // 123 strconv.FormatInt(123, 2) // 1111011 浮点型转字符串 fmt.Sprintf

支持 float32、float64 转 string

fmt.Sprintf("%f", 3.12344) // 3.123440 ​​​​​​​// 控制输出小数位数 fmt.Sprintf("%.2f", 323.12344) // 323.12 strconv.FormatFloat 入参

f:float64类型的浮点数

fmt: 转为字符串后,字符串的类型:‘b’ (-ddddp±ddd):二进制指数

‘e’ (-d.dddde±dd):10进制指数

‘E’ (-d.ddddE±dd):10进制指数

‘f’ (-ddd.dddd):无指数

‘g’ :指数很大时使用’e',其他使用 ‘f’

‘G’ :指数很大时使用 ‘E’,其他使用’f'

‘x’ (-0xd.ddddp±ddd):十六进制分数和二进制指数

‘X’ (-0Xd.ddddP±ddd):十六进制分数和二进制指数

prec:控制经度如果格式标记为 ‘e’、‘E’、‘f’、‘x’、‘X’,则 prec 表示小数点后的数字位数

如果格式标记为 ‘g’,‘G’,则 prec 表示总的数字位数(整数部分+小数部分)

bitSize:表示f最初的类型。(虽然入参f是float64,有可能是float32转过来的)

func FormatFloat(f float64, fmt byte, prec, bitSize int) string { return string(genericFtoa(make([]byte, 0, max(prec+4, 24)), f, fmt, prec, bitSize)) } 使用方法 strconv.FormatFloat(3.1415926, 'f', 5, 64) // 3.14159 strconv.FormatFloat(3.1415926e5, 'f', 5, 64) // 314159.26000 字符串转整形 strconv.Atoi

string 转 int,默认字符串是10进制的,相当于是下个方法 ParseInt(s, 10, 0) 的 10 进制转化简版

func Atoi(s string) (int, error) 使用方法 strconv.Atoi("1234") // 1234 <nil> strconv.Atoi("001") // 1 <nil> strconv.ParseInt

string 转 int32 int64 int,字符串可以是不同进制类型的。

// s: 数字的字符串形式 // base: 数字字符串的进制,支持0以及2-36。如果该字段为0,会根据字符串的前缀来推断进制,比如"0b"->2进制、"0或0o"->8进制、"0x" -> 16进制 // bitSize: 返回结果的bit大小, 0 -> int, 8 -> int8、16 -> int16、32 -> int32、 64 -> int64。因为可以选择不同的 bitSize,所以统一转为int64,不会丢失精度。可根据需要的bitSize,自行转回去 func ParseInt(s string, base int, bitSize int) (i int64, err error) 使用方法 // 转int32 num, err := strconv.ParseInt("123",10,32) fmt.Println(int32(num), err) // 123 <nil> // 转int64 num, err := strconv.ParseInt("123", 10, 64) fmt.Println(num, err) // 123 <nil> // 转int num, err := strconv.ParseInt("123", 10, 64) fmt.Println(int(num), err) // 123 <nil> // 二进制转int64 num, err := strconv.ParseInt("0b1001", 0, 64) fmt.Println(int(num), err) // 9 <nil> 字符串转浮点型 strconv.ParseFloat // s: 字符串 // bitSize: 要返回结果的精度 // 方法始终返回float64,即使 bitSize=32,返回 float64 也不会丢失精度 func ParseFloat(s string, bitSize int) (float64, error) { if bitSize == 32 { f, err := atof32(s) return float64(f), err } return atof64(s) } 使用方法 strconv.ParseFloat("123.213", 64) // 123.213 <nil> ​​​​​​​ strconv.ParseFloat("123.213e3", 64) // 123213 <nil> 总结

本文介绍了整形、浮点型、字符串的互相转换方法,可以记住 fmt.Sprintf方法,以及 strconv 包,用到时根据 IDE 的方法提示就可以搞定了!

到此这篇关于Go语言中int、float、string类型之间相互转换的文章就介绍到这了,更多相关Go语言int、float、string转换内容请搜索易知道(ezd.cc)以前的文章或继续浏览下面的相关文章希望大家以后多多支持易知道(ezd.cc)!

推荐阅读