2013-08-08 5 views

답변

20

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. 예를 들어

3

:

package main 

import "fmt" 

func main() { 
     for i, rune := range "Hello, 世界" { 
       fmt.Printf("%d: %c\n", i, rune) 
     } 
} 

Playground


출력 : golang.org에 주어진 예를 미러링하는

0: H 
1: e 
2: l 
3: l 
4: o 
5: , 
6: 
7: 世 
10: 界 
1

는, 이동이 쉽게 문자열을 변환 할 수 있습니다 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 참조).

관련 문제