Golang 문자열의 문자 인덱싱
문자열에서 문자를 검색하려면 인덱싱 작업을 사용합니다. 그러나 인덱싱된 값이 예상 문자와 일치하지 않는 경우가 발생할 수 있습니다. 예를 들어 아래 코드에서는
package main import "fmt" func main() { fmt.Print("HELLO"[1]) }
문자 "E" 대신 69가 출력됩니다.
Golang 문자열 인코딩 이해
Golang은 문자열 리터럴에 UTF-8 인코딩을 사용합니다. 문자 "E"를 포함한 ASCII 문자는 단일 바이트를 차지합니다. 그러나 더 큰 유니코드 문자는 여러 바이트로 표시될 수 있습니다.
문자 색인화에 룬 사용
문자를 올바르게 색인화하려면 유니코드 코드 포인트를 나타내는 정수인 룬을 사용하십시오. 룬은 UTF-8 문자의 기본 유형입니다. rune() 함수를 사용하여 바이트를 룬으로 변환할 수 있습니다.
바이트를 문자로 변환
바이트를 해당 문자로 변환하려면 다음을 사용할 수 있습니다. string() 함수:
fmt.Println(string("Hello"[1])) // ASCII only
이 접근 방식은 ASCII에 적합합니다.
룬을 문자로 변환
유니코드 문자의 경우 []rune() 슬라이스를 사용하여 룬을 문자로 변환할 수 있습니다:
fmt.Println(string([]rune("Hello, 世界")[1])) // UTF-8
유니코드의 예 문자
다음 예를 고려하십시오.
fmt.Println(string([]rune("Hello, 世界")[8])) // UTF-8
이렇게 하면 한자 "world"에 대한 유니코드 코드 포인트인 "界"가 인쇄됩니다.
추가 자료
위 내용은 Go의 문자열 인덱싱이 항상 예상 문자를 반환하지 않는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!