중간 변환 없이 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!