中間変換なしで 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 サイトの他の関連記事を参照してください。