>  기사  >  백엔드 개발  >  중간 변환 없이 Golang에서 int32를 문자열로 어떻게 변환합니까?

중간 변환 없이 Golang에서 int32를 문자열로 어떻게 변환합니까?

Barbara Streisand
Barbara Streisand원래의
2024-11-01 12:23:02564검색

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

중간 변환 없이 Golang에서 int32를 문자열로 변환

int32를 Golang에서 문자열로 변환하는 것은 다음을 사용하여 수행할 수 있는 일반적인 작업입니다. 다양한 기술. 일부 접근 방식에서는 int 또는 int64로의 중간 변환이 필요하지만 이러한 단계 없이 직접 변환하는 것이 가능합니다.

fmt.Sprint(i)

가장 간단하고 가장 효율적인 방법은 fmt.Sprint(i)를 활용하는 것입니다. 이 함수는 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를 문자열로 변환하려면 중간 변환 단계가 필요한 경우가 많지만 직접 변환을 수행하는 것도 가능합니다. . fmt.Sprint(i)는 가장 효율적이고 편리한 접근 방식을 제공하는 동시에 사용자 정의 변환 기능은 성능에 민감한 시나리오에 가장 빠른 솔루션을 제공할 수 있습니다.

위 내용은 중간 변환 없이 Golang에서 int32를 문자열로 어떻게 변환합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.