Golang で中間変換を行わずに int32 を文字列に変換するにはどうすればよいですか?

Barbara Streisand
リリース: 2024-11-01 12:23:02
オリジナル
573 人が閲覧しました

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

中間変換なしで Golang で int32 を文字列に変換する

Golang で int32 を文字列に変換することは、次のコマンドを使用して実行できる一般的なタスクです。さまざまなテクニック。一部のアプローチでは int または int64 への中間変換が必要ですが、これらの手順を行わずに直接変換を行うことも可能です。

fmt.Sprint(i)

最も単純で最も効果的な方法効率的な方法は、fmt.Sprint(i) を利用することです。この関数は、任意のインターフェース型を int32 を含む文字列に変換します。{}値を文字列として表すために必要な書式設定を内部で実行します。

カスタム変換関数

パフォーマンスが重要なシナリオの場合、カスタム変換関数は最速のソリューションを提供できます。 。次のコード スニペットは、中間変換を行わずに int32 を string に変換する関数を実装します。

<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 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!