Go에서 문자열 반전: 룬 및 유니코드 문자 처리
Go에서 문자열을 조작하면 유니코드 문자로 작업할 때 문제가 발생할 수 있습니다. 룬으로. 문자열이 문자 시퀀스로 처리되는 C와 달리 Go는 문자열을 바이트 벡터로 처리합니다. 이 문제를 해결하려면 문자 수준 작업을 수행하기 위해 바이트와 룬 사이를 변환해야 합니다.
제공한 코드를 살펴보겠습니다.
<code class="go">func inverte() { var strs, aux string // Generate 5 strings with random characters of sizes 100, 200, 300, 400, and 500 for i := 1; i < 6; i++ { strs = randomString(i * 100) fmt.Print(strs) // Attempt to reverse the characters for i2, j := 0, len(strs); i2 < j; i2, j = i+1, j-1 { aux = strs[i2] strs[i2] = strs[j] strs[j] = aux } } }</code>
코드의 문제는 strs 할당에서 발생합니다. [i2] = strs[j], 여기서 strs[i2]와 strs[j]는 모두 바이트입니다. 그러나 캐릭터를 교환하려면 룬을 사용해야 합니다. 이 문제를 해결하려면 rune 함수를 사용하여 바이트 값을 룬으로 변환할 수 있습니다.
<code class="go">for i2, j := 0, len(strs); i2 < j; i2, j = i+1, j-1 { r1 := rune(strs[i2]) r2 := rune(strs[j]) strs[i2] = byte(r2) strs[j] = byte(r1) }</code>
룬으로 변환하면 문자 수준 교체 작업을 올바르게 수행할 수 있습니다.
위 내용은 유니코드 문자에 대한 룬을 처리하는 동안 Go에서 문자열을 어떻게 뒤집나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!