Go 의 Range 키워드 탐구

Beginner

This tutorial is from open-source community. Access the source code

소개

range 키워드는 Golang 에서 다양한 자료 구조의 요소를 반복하는 데 사용됩니다. 이 랩에서는 range를 다양한 자료 구조와 함께 사용하는 방법을 살펴봅니다.

Range (범위)

이 랩에서 해결해야 할 문제는 range를 슬라이스 (slice), 배열 (array), 맵 (map), 문자열 (string) 과 함께 사용하는 방법을 시연하는 것입니다.

이 랩을 완료하려면 다음이 필요합니다.

  • Golang 구문에 대한 기본적인 지식
  • 컴퓨터에 설치된 Golang
$ go run range.go
sum: 9
index: 1
a - > apple
b - > banana
key: a
key: b
0 103
1 111

전체 코드는 다음과 같습니다.

// _range_는 다양한 자료 구조의 요소를 반복합니다.
// 이미 배운 몇 가지 자료 구조와 함께 `range` 를 사용하는 방법을 살펴보겠습니다.

package main

import "fmt"

func main() {

    // 여기서는 `range` 를 사용하여 슬라이스 내 숫자들의 합을 구합니다.
    // 배열도 이와 같이 작동합니다.
    nums := []int{2, 3, 4}
    sum := 0
    for _, num := range nums {
        sum += num
    }
    fmt.Println("sum:", sum)

    // 배열과 슬라이스에 대한 `range` 는 각 항목에 대한
    // 인덱스 (index) 와 값을 모두 제공합니다. 위에서는 인덱스가
    // 필요하지 않아 빈 식별자 `_` 로 무시했습니다. 하지만
    // 때로는 실제로 인덱스가 필요할 때도 있습니다.
    for i, num := range nums {
        if num == 3 {
            fmt.Println("index:", i)
        }
    }

    // 맵에 대한 `range` 는 키/값 쌍을 반복합니다.
    kvs := map[string]string{"a": "apple", "b": "banana"}
    for k, v := range kvs {
        fmt.Printf("%s -> %s\n", k, v)
    }

    // `range` 는 맵의 키만 반복할 수도 있습니다.
    for k := range kvs {
        fmt.Println("key:", k)
    }

    // 문자열에 대한 `range` 는 유니코드 코드
    // 포인트를 반복합니다. 첫 번째 값은 `rune` 의 시작 바이트 인덱스이고
    // 두 번째 값은 `rune` 자체입니다.
    // 자세한 내용은 [Strings and Runes](strings-and-runes) 를 참조하십시오.
    for i, c := range "go" {
        fmt.Println(i, c)
    }
}

요약

이 랩에서는 Golang 에서 슬라이스, 배열, 맵, 문자열과 함께 range를 사용하는 방법을 배웠습니다. range 키워드는 다양한 자료 구조의 요소를 반복하는 편리한 방법을 제공합니다.