
115
4
장
블록, 섀도, 제어 구조
예제
4-16
문자열 순회
samples := []string{“hello”, “apple_π!”}
for _, sample := range samples {
for i, r := range sample {
fmt.Println(i, r, string(r))
}
fmt.Println()
}
프로그램의 출력은 ‘
hello
’ 문자열을 순회하여 하나씩 출력할 것이다.
0 104 h
1 101 e
2 108 l
3 108 l
4 111 o
첫 번째 열에는 인덱스를, 두 번째는 문자의 숫자 값, 세 번째는 문자의 숫자 값을 문자열로 변
환한 값이다.
‘
apple
_
π
!’의 결과를 살펴보면 흥미로운 지점이 있다.
0 97 a
1 112 p
2 112 p
3 108 l
4 101 e
5 95 _
6 960
π
8 33 !
여기서 두 가지 주목해야 하는 것이 있다. 첫 번째는, 숫자
7
열을 건너뛰었다. 두 번째는 여섯
번째 위치의 문자의 값이
960
이다. 한 바이트로 표현하기엔 훨씬 큰 수이다. 하지만
3
장에서
보았듯이, 문자열은 한 바이트 이상으로 사용할 수 있다고 언급했다. 무슨 일이 일어난 것일까?
for
-
range
루프로 문자열을 순회할 때 특별한 행동을 볼 수 있다. 그것은
룬
을 순회한 것이
지
바이트
를 순회한 것이 아니다.
for
-
range
로 문자열에 ...