나는이 싶었 :Go에서 룬 문자로 문자열을 반복 처리하려면 어떻게해야합니까?
for i := 0; i < len(str); i++ {
dosomethingwithrune(str[i]) // takes a rune
}
그러나 str[i]
이 byte
(uint8
) 오히려 rune
보다 입력이 밝혀졌습니다.
문자열 대신 바이트 대신 룬 문자를 반복 할 수 있습니까?
나는이 싶었 :Go에서 룬 문자로 문자열을 반복 처리하려면 어떻게해야합니까?
for i := 0; i < len(str); i++ {
dosomethingwithrune(str[i]) // takes a rune
}
그러나 str[i]
이 byte
(uint8
) 오히려 rune
보다 입력이 밝혀졌습니다.
문자열 대신 바이트 대신 룬 문자를 반복 할 수 있습니까?
는 Effective Go에서이 예를 참조하십시오
for pos, char := range "日本語" {
fmt.Printf("character %c starts at byte position %d\n", char, pos)
}
이 인쇄 : 문자열에 대한
character 日 starts at byte position 0
character 本 starts at byte position 3
character 語 starts at byte position 6
을, 범위가를 분석하여 개별 유니 코드 코드 포인트를 깨고, 당신을 위해 더 많은 일을한다 UTF-8. 예를 들어
:
package main
import "fmt"
func main() {
for i, rune := range "Hello, 世界" {
fmt.Printf("%d: %c\n", i, rune)
}
}
출력 : golang.org에 주어진 예를 미러링하는
0: H
1: e
2: l
3: l
4: o
5: ,
6:
7: 世
10: 界
는, 이동이 쉽게 문자열을 변환 할 수 있습니다 r의 조각
runes := []rune("Hello, 世界")
for i := 0; i < len(runes) ; i++ {
fmt.Printf("Rune %v is '%c'\n", i, runes[i])
}
은 물론, 우리는 또한 여기에 다른 예에서와 같이 범위 연산자를 사용할 수 있지만이보다 밀접하게 원래의 구문을 다음과 unes을 한 다음에 원래 원처럼 것을 반복. 어떤 경우,이 출력됩니다 다음 rune
유형 int32
의 별칭이기 때문에
Rune 0 is 'H'
Rune 1 is 'e'
Rune 2 is 'l'
Rune 3 is 'l'
Rune 4 is 'o'
Rune 5 is ','
Rune 6 is ' '
Rune 7 is '世'
Rune 8 is '界'
주, 우리는 Printf
문 대신 일반 %v
의 %c
를 사용해야합니다, 또는 우리가의 정수 표현을 볼 수 유니 코드 코드 포인트 (A Tour of Go 참조).