Home > Backend Development > Golang > How do I convert an int32 to a string in Golang without intermediate conversions?

How do I convert an int32 to a string in Golang without intermediate conversions?

Barbara Streisand
Release: 2024-11-01 12:23:02
Original
663 people have browsed it

How do I convert an int32 to a string in Golang without intermediate conversions?

Converting int32 to String in Golang Without Intermediate Conversions

Converting an int32 to a string in Golang is a common task that can be accomplished using various techniques. While some approaches require intermediate conversions to int or int64, it is possible to achieve direct conversion without these steps.

fmt.Sprint(i)

The simplest and most efficient method is to utilize fmt.Sprint(i). This function converts any interface{} type to a string, including int32. It internally performs the necessary formatting to represent the value as a string.

Custom Conversion Function

For performance-critical scenarios, a custom conversion function can provide the fastest solution. The following code snippet implements a function that converts int32 to string without intermediate conversions:

<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>
Copy after login

Benchmarking Different Approaches

Here's a benchmark comparison of the various methods:

<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>
Copy after login

Here are the performance results:

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

As evident from the benchmarks, fmt.Sprint(i) provides the best performance, followed by the custom conversion function String(i). The other methods involving intermediate conversions are noticeably slower.

Conclusion

While converting int32 to string in Golang often requires intermediate conversion steps, it is possible to perform the conversion directly. fmt.Sprint(i) offers the most efficient and convenient approach, while a custom conversion function can provide the fastest solution for performance-sensitive scenarios.

The above is the detailed content of How do I convert an int32 to a string in Golang without intermediate conversions?. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Articles by Author
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template