在Golang 中將int32 轉換為String,無需中間轉換
在Golang 中將int32 轉換為字串是一項常見任務,可以使用以下命令完成各種技術。雖然有些方法需要中間轉換為 int 或 int64,但無需這些步驟即可實現直接轉換。
fmt.Sprint(i)
最簡單、最簡單有效的方法是利用 fmt.Sprint(i)。該函數將任何interface{}類型轉換為字串,包括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 轉換為 string 通常需要中間轉換步驟,但可以直接執行轉換。 fmt.Sprint(i) 提供了最高效、便捷的方法,而自訂轉換函數可以為效能敏感的場景提供最快的解決方案。
以上是如何在 Golang 中將 int32 轉換為字串而不需要中間轉換?的詳細內容。更多資訊請關注PHP中文網其他相關文章!