在 Golang 中将 int32 转换为 String,无需中间转换
在 Golang 中将 int32 转换为字符串是一项常见任务,可以使用以下命令完成各种技术。虽然有些方法需要中间转换为 int 或 int64,但无需这些步骤即可实现直接转换。
fmt.Sprint(i)
最简单、最简单有效的方法是利用 fmt.Sprint(i)。该函数将任何interface{}类型转换为字符串,包括int32。它在内部执行必要的格式化以将值表示为字符串。
自定义转换函数
对于性能关键的场景,自定义转换函数可以提供最快的解决方案。以下代码片段实现了一个无需中间转换即可将 int32 转换为字符串的函数:
<code class="go">func String(n int32) string { buf := [11]byte{} pos := len(buf) i := int64(n) signed := i < 0 if signed { i = -i } for { pos-- buf[pos], i = '0'+byte(i%10), i/10 if i == 0 { if signed { pos-- buf[pos] = '-' } return string(buf[pos:]) } } }</code>
对不同方法进行基准测试
以下是各种方法的基准比较:
<code class="go">package main import ( "fmt" " strconv" " time" ) func main() { var s string i := int32(-2147483648) t := time.Now() for j := 0; j < 50000000; j++ { s = String(i) //5.5923198s //s = String2(i) //5.5923199s //s = strconv.FormatInt(int64(i), 10) // 5.9133382s //s = strconv.Itoa(int(i)) //5.9763418s //s = fmt.Sprint(i) // 13.5697761s } fmt.Println(time.Since(t)) fmt.Println(s) } func String(n int32) string { ... } ...</code>
以下是性能结果:
Method | Time (seconds) |
---|---|
String(i) | 5.5923198 |
fmt.Sprint(i) | 13.5697761 |
strconv.Itoa(int(i)) | 5.9763418 |
strconv.FormatInt(int64(i), 10) | 5.9133382 |
从基准测试中可以看出,fmt.Sprint(i) 提供了最佳性能,其次是自定义转换函数 String(i) 。其他涉及中间转换的方法明显慢一些。
结论
虽然 Golang 中将 int32 转换为 string 通常需要中间转换步骤,但可以直接执行转换。 fmt.Sprint(i) 提供了最高效、便捷的方法,而自定义转换函数可以为性能敏感的场景提供最快的解决方案。
以上是如何在 Golang 中将 int32 转换为字符串而不需要中间转换?的详细内容。更多信息请关注PHP中文网其他相关文章!