Golang에서 int32를 문자열로 효율적으로 변환하는 방법은 무엇입니까?

Barbara Streisand
풀어 주다: 2024-11-03 12:25:02
원래의
680명이 탐색했습니다.

How to Efficiently Convert int32 to String in Golang?

Golang에서 int32를 문자열로 변환

int32를 Golang에서 문자열로 변환하는 것은 간결한 솔루션을 사용하면 간단할 수 있습니다: fmt.Sprint(i) . 그러나 이 직접적인 방법이 충분하지 않은 경우 다음과 같은 여러 가지 변환 옵션을 사용할 수 있습니다.

  1. 사용자 정의 변환 함수: 이것은 자신만의 변환 함수를 작성하는 가장 빠른 방법입니다.
  2. fmt.Sprint(i): 이는 사용자 정의 기능에 비해 느린 접근 방식이지만 여전히 옵션입니다.
  3. strconv.Itoa(int(i) ): fmt.Sprint(i)보다 약간 빠르지만 변환하기 전에 int32를 int로 변환해야 합니다.
  4. strconv.FormatInt(int64(i), 10): 이 int32를 int64로 직접 변환한 다음 문자열로 변환하므로 strconv.Itoa(int(i))에 비해 더 빠른 방법입니다.

성능 벤치마크에 따르면 사용자 지정 변환 함수(String)가 가장 많이 사용되는 것으로 나타났습니다. 그 다음은 strconv.FormatInt, strconv.Itoa 및 fmt.Sprint입니다.

다음은 비교를 보여주는 코드 조각입니다.

<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)
        //s = String2(i)  // Other conversion functions can be used here
    }
    fmt.Println(time.Since(t))
    fmt.Println(s)
}

func String(n int32) string {
    // Custom conversion function
    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>
로그인 후 복사

궁극적으로 최선의 선택은 특정 요구 사항에 따라 다릅니다. 및 애플리케이션의 성능 제약.

위 내용은 Golang에서 int32를 문자열로 효율적으로 변환하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿