Go - Range: A Comprehensive Guide for Beginners
안녕하세요, 꿈나이 프로그래머 여러분! 오늘 우리는 Go 프로그래밍의 세계로 흥미로운 여정을 떠납니다. 특히 range
키워드에 대해 집중적으로 다룰 예정입니다. 여러분의 친절한 이웃 컴퓨터 과학 교사로서 저는 많은 예제와 설명을 통해 이 개념을 안내해 드리겠습니다. 그러니 마음에 드는 음료를 골라 편안하게 자리 잡고, 이제 시작해 보겠습니다!
What is Range?
coding하기 전에 range
에 대해 이해해 보겠습니다. Go에서 range
는 데이터 구조물의 마법 같은 안내자입니다. 그것은 배열, 슬라이스, 맵, 문자열, 채널 등 다양한 데이터 타입을 반복하도록 도와줍니다. 이를 다양한 데이터 컬렉션을 반복하는 스위스 아ーノ이Knife라고 생각해 보세요.
The Syntax of Range
range
의 기본 문법은 매우 간단합니다:
for index, value := range collection {
// 여러분의 코드 여기에
}
여기서 index
는 요소의 위치를, value
는 요소 자체를 제공합니다. 하지만 이제 막 이해가 힘들다면 걱정 마세요 - 곧 많은 예제를 통해 이해를 돕겠습니다!
Range with Arrays and Slices
간단한 예제로 배열을 사용해 보겠습니다:
package main
import "fmt"
func main() {
fruits := [3]string{"apple", "banana", "cherry"}
for index, fruit := range fruits {
fmt.Printf("Index: %d, Fruit: %s\n", index, fruit)
}
}
이 코드를 실행하면 다음과 같은 출력을 볼 수 있습니다:
Index: 0, Fruit: apple
Index: 1, Fruit: banana
Index: 2, Fruit: cherry
여기서 무슨 일이 일어나고 있나요? range
키워드는 우리의 fruits
배열을 반복시키고 있습니다. 각 반복에서 그给我们 요소의 인덱스와 해당 요소(과일 이름)을 제공합니다.
Using Only the Index
occasionally, you might only need the index. In that case, you can omit the value variable:
for index := range fruits {
fmt.Printf("Index: %d\n", index)
}
Using Only the Value
Or maybe you only care about the values and not the indices. You can use the blank identifier _
to ignore the index:
for _, fruit := range fruits {
fmt.Printf("Fruit: %s\n", fruit)
}
Range with Maps
Go의 맵은 키-밸류 쌍으로 가득 찬 보물상자입니다. range
가 어떻게 작동하는지 보겠습니다:
package main
import "fmt"
func main() {
ages := map[string]int{
"Alice": 25,
"Bob": 30,
"Charlie": 35,
}
for name, age := range ages {
fmt.Printf("%s is %d years old\n", name, age)
}
}
출력:
Alice is 25 years old
Bob is 30 years old
Charlie is 35 years old
여기서 range
는 맵의 각 항목에 대해 키(이름)와 값(나이)을 제공합니다.
Range with Strings
Go의 문자열은 바이트 시퀀스이며 range
는 이를 반복할 수 있습니다:
package main
import "fmt"
func main() {
message := "Hello, 世界"
for index, runeValue := range message {
fmt.Printf("Index: %d, Character: %c, Unicode: %U\n", index, runeValue, runeValue)
}
}
이 예제는 range
가 다중 바이트 문자(예: 중국어)를 올바르게 처리하는 방법을 보여줍니다.
Range with Channels
채널은 Go의 고유한 기능으로 goroutines 간의 통신을 위해 사용됩니다. 채널과 range
가 어떻게 작동하는지 보겠습니다:
package main
import "fmt"
func main() {
ch := make(chan int)
go func() {
ch <- 1
ch <- 2
ch <- 3
close(ch)
}()
for num := range ch {
fmt.Println(num)
}
}
이 예제에서 range
는 채널이 닫히기 전까지 계속 값을 받아들입니다.
Common Range Methods
다음 표는 range
의 일반적인 사용 방법을 요약합니다:
데이터 타입 | 문법 | 설명 |
---|---|---|
Array/Slice | for index, value := range array |
각 요소에 대해 인덱스와 값을 제공합니다 |
Map | for key, value := range map |
각 키-밸류 쌍을 반복합니다 |
String | for index, runeValue := range string |
각 유니코드 코드 포인트를 반복합니다 |
Channel | for value := range channel |
채널이 닫히기 전까지 값을 받아들입니다 |
Conclusion
이제 range
키워드에 대해 많은 정보를 얻었습니다. 배열에서 맵, 문자열에서 채널까지, range
는 Go에서 데이터 구조물을 반복하는 데 유용한 동반자입니다.
기억하세요, 연습이 완벽을 이루는 길입니다. 다양한 데이터 타입으로 range
를 사용하는 자신의 프로그램을 작성해 보세요. 실험하고 실수하고 그것에서 배우세요. 이는 프로그래밍에 능숙해지는 가장 좋은 방법입니다.
끝으로, 조금의 프로그래밍 유머를 준비했습니다: 왜 프로그래머들은 다크 모드를 좋아할까요? 빛이 벌레를吸引了! ?
행복한 코딩 되세요, 그리고 range
가 여러분과 함께 하기를 바랍니다!
Credits: Image by storyset