登录
首页 >  Golang >  Go问答

在 Golang 中将 int32 转换为字符串

来源:Golang技术栈

时间:2023-04-19 13:07:14 110浏览 收藏

哈喽!今天心血来潮给大家带来了《在 Golang 中将 int32 转换为字符串》,想必大家应该对Golang都不陌生吧,那么阅读本文就都不会很困难,以下内容主要涉及到golang,若是你正在学习Golang,千万别错过这篇文章~希望能帮助到你!

问题内容

我需要在 Golang中转换int32为。string是否可以在不转换为或先转换int32stringGolang 的情况下转换为?int``int64

Itoa需要一个int. FormatInt需要一个int64.

正确答案

一行答案是fmt.Sprint(i)

无论如何,即使在标准库函数中也有很多转换,fmt.Sprint(i)所以你有一些选择(试试Go Playground):


1-您可以编写转换函数( 最快 ):

func String(n int32) string {
    buf := [11]byte{}
    pos := len(buf)
    i := int64(n)
    signed := i 

2- 你可以使用fmt.Sprint(i)
见里面:

// Sprint formats using the default formats for its operands and returns the resulting string.
// Spaces are added between operands when neither is a string.
func Sprint(a ...interface{}) string {
    p := newPrinter()
    p.doPrint(a)
    s := string(p.buf)
    p.free()
    return s
}

3-您可以使用strconv.Itoa(int(i))快速
查看内部:

// Itoa is shorthand for FormatInt(int64(i), 10).
func Itoa(i int) string {
    return FormatInt(int64(i), 10)
}

4-您可以使用strconv.FormatInt(int64(i), 10)更快
查看内部:

// FormatInt returns the string representation of i in the given base,
// for 2 = 10.
func FormatInt(i int64, base int) string {
    _, s := formatBits(nil, uint64(i), base, i 

比较和基准测试(50000000 次迭代):

s = String(i)                       takes:  5.5923198s
s = String2(i)                      takes:  5.5923199s
s = strconv.FormatInt(int64(i), 10) takes:  5.9133382s
s = strconv.Itoa(int(i))            takes:  5.9763418s
s = fmt.Sprint(i)                   takes: 13.5697761s

代码:

package main

import (
    "fmt"
    //"strconv"
    "time"
)

func main() {
    var s string
    i := int32(-2147483648)
    t := time.Now()
    for j := 0; j 

今天关于《在 Golang 中将 int32 转换为字符串》的内容就介绍到这里了,是不是学起来一目了然!想要了解更多关于golang的内容请关注golang学习网公众号!

声明:本文转载于:Golang技术栈 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>