> 백엔드 개발 > Golang > Go 문자열: 룬 대 바이트 반복: 언제 어느 것을 사용해야 합니까?

Go 문자열: 룬 대 바이트 반복: 언제 어느 것을 사용해야 합니까?

DDD
풀어 주다: 2024-12-16 13:39:11
원래의
437명이 탐색했습니다.

Go Strings: Rune vs. Byte Iteration: When Should I Use Which?

Go에서 문자열의 룬과 바이트 범위 사이의 차이점 이해

range 절을 사용하여 Go에서 문자열을 반복하는 동안 다음을 수행할 수 있습니다. 룬(rune)과 바이트(byte)라는 두 가지 데이터 유형을 접하게 됩니다. 혼란스러울 수 있으므로 왜 이런 일이 발생하는지 자세히 살펴보겠습니다.

Go 언어 정의에 따르면 문자열은 바이트의 시퀀스이며 개별 요소는 str[index]를 사용하여 인덱스로 액세스할 수 있습니다. . 그러나 for range를 사용하여 문자열을 반복하면 검색된 문자는 rune 유형입니다.

이러한 구별은 문자열의 코드 포인트(유니코드 문자)에 대한 반복을 허용하는 range 절의 정의에서 발생합니다. . 각 코드 포인트는 문자 인코딩에 따라 하나 이상의 바이트로 구성됩니다. range 절은 이러한 코드 포인트의 시작 바이트를 반복하여 해당 룬 값을 튜플의 두 번째 요소로 제공합니다.

반복 중에 잘못된 UTF-8 시퀀스가 ​​발견되면 두 번째 값은 유니코드 대체 문자(0xFFFD) 및 반복자는 1바이트씩 진행됩니다.

문자열의 개별 바이트를 반복하려면 다음을 사용할 수 있습니다. 대안:

  1. 수동 바이트 루핑:

    for i := 0; i < len(s); i++ {
        // Access the byte at position i in "s"
    }
    로그인 후 복사
  2. 바이트로 변환 Slice:

    for i, b := range []byte(s) {
        // Access both the index (i) and the byte (b)
    }
    로그인 후 복사

문자열의 바이트 범위는 덜 간결하지만 특정 시나리오에서 필요할 수 있는 원시 바이트 값에 대한 액세스를 제공합니다. 룬과 바이트 범위의 차이를 이해하면 원하는 요구 사항에 맞게 Go에서 문자열을 효과적으로 조작할 수 있습니다.

위 내용은 Go 문자열: 룬 대 바이트 반복: 언제 어느 것을 사용해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿