반응형
- 여러 타입의 각 요소를 순회하는 구문이다.
- 배열, 문자열, 슬라이스, 맵 등에서 사용한다
# 기본 구조
for 인덱스, 값 := range 배열,문자열,슬라이스,맵 {
fmt.Println("index : ", index, " value : ", value)
}
- 각 요소를 순회하면서 인덱스와 값을 반환합니다.
# 인덱스 필요없는 경우
for _, 값 := range 배열,문자열,슬라이스,맵 {
fmt.Println("index : ", index, " value : ", value)
}
- 인덱스가 필요없는 경우
_
(밑줄)을 이용하여 사용하지 않는다는 표시를 하면 된다.
# 배열 예시
예시
nums := [5]int{1,2,3}
for index, value := range nums {
fmt.Println("index : ", index, " value : ", value)
}
- 배열을 예시로 들었다. 길이가 5인 배열을 순회하는 것이다.
결과
index : 0 value : 1
index : 1 value : 2
index : 2 value : 3
index : 3 value : 0
index : 4 value : 0
# 슬라이스 예시
slice := []int{1, 2, 3}
for index, value := range slice {
fmt.Println("index : ", index, " value : ", value)
}
- 슬라이스는 요소값이 정하지 않아도 된다. 그래서 있는 값만 순회에 출력한다.
결과
index : 0 value : 1
index : 1 value : 2
index : 2 value : 3
# 문자열 예시
str := "안녕! Genie"
for index, value := range str {
fmt.Println("index : ", index, " value : ",value , "rune 타입을 string : ",string(value))
}
결과
index : 0 value : 50504 rune 타입을 string : 안
index : 3 value : 45397 rune 타입을 string : 녕
index : 6 value : 33 rune 타입을 string : !
index : 7 value : 32 rune 타입을 string :
index : 8 value : 71 rune 타입을 string : G
index : 9 value : 101 rune 타입을 string : e
index : 10 value : 110 rune 타입을 string : n
index : 11 value : 105 rune 타입을 string : i
index : 12 value : 101 rune 타입을 string : e
값의 타입이 rune 타입이라고 책에 적혀있었는데 값이 숫자로 나와서 당황했다.
그래서 type를 보니까 int32로 나왔다. 처음엔 아스키코드인가 생각했다.
rune 타입이 낯설어서 찾아봤다.
rune 타입
1) rune 타입를 int32로 재정의한다고 한다.
2) rune 타입은 유니코드를 표현하는 타입이다.
참조
https://caileb.tistory.com/199
# 맵 예시
maps := map[string]string{"name": "Genie", "age": "20"}
for key, value := range maps {
fmt.Println("key : ", key, " value : ", value)
}
- key값은 정렬 되지 않는다. 뭐가 먼저 출력될지 모른다.
결과
index : name value : Genie
index : age value : 20
index : age value : 20
index : name value : Genie
- name이 먼저 출력될지 age가 먼저 출력될지 모른다. 10번에 1번은 age가 먼저 출력되는 느낌이다
반응형
'Study > Go 언어' 카테고리의 다른 글
[golang] 구조체(struct) 공부하기 (0) | 2022.02.18 |
---|---|
[golang] 배열 공부하기 (0) | 2022.02.14 |
[golang] for문 공부하기 (0) | 2022.02.12 |
[golang] switch문 공부하기 (0) | 2022.02.11 |
[golang] if문 공부하기 (0) | 2022.02.10 |