[go] 구조체(struct)를 맵(map)과 함께 사용하는 방법

구조체와 맵은 Go 언어에서 데이터를 저장하고 관리하는 두 가지 주요한 방법입니다. 구조체는 필드를 가지며 각 필드는 이름과 해당 필드에 대한 값으로 구성됩니다. 맵은 키와 값의 쌍으로 구성되며, 키를 사용하여 값을 검색 및 조작할 수 있습니다.

이 글에서는 구조체와 맵을 함께 사용하는 방법을 알아보겠습니다.

1. 구조체와 맵 정의하기

다음은 구조체와 맵을 정의하는 간단한 예제입니다.

type Person struct {
    Name  string
    Age   int
    Email string
}

func main() {
    personMap := make(map[string]Person)

    person1 := Person{"John", 30, "john@example.com"}
    personMap["john"] = person1

    person2 := Person{"Amy", 25, "amy@example.com"}
    personMap["amy"] = person2

    // 맵에서 구조체 값 추출
    john := personMap["john"]
    fmt.Println(john.Name, john.Age, john.Email)
}

위의 예제에서는 Person이라는 구조체를 정의하고, Name, Age, Email 필드를 가지도록 하였습니다. 또한 personMap이라는 맵을 정의하여 문자열 키와 Person 구조체 값의 쌍을 저장합니다.

2. 구조체 값 변경하기

맵을 사용하면 구조체 값의 수정도 간단하게 할 수 있습니다. 다음은 예제 코드에 구조체 값 변경 코드를 추가한 것입니다.

func main() {
    // ...

    // 구조체 값 변경
    personMap["john"] = Person{"John Smith", 32, "john@example.com"}

    // 변경된 구조체 값 추출
    johnModified := personMap["john"]
    fmt.Println(johnModified.Name, johnModified.Age, johnModified.Email)
}

위의 코드에서는 personMap에 “john” 키를 사용하여 구조체 값을 변경합니다. 이후에 변경된 구조체 값을 다시 추출하여 출력합니다.

3. 맵의 반복문 처리

맵에 저장된 모든 구조체 값을 순회하고 싶다면 반복문을 사용할 수 있습니다. 다음은 예제 코드에 반복문을 추가한 것입니다.

func main() {
    // ...

    // 맵 반복문 처리
    for key, value := range personMap {
        fmt.Println(key, value.Name, value.Age, value.Email)
    }
}

위의 코드에서는 range를 사용하여 personMap의 키와 값을 순회하면서 출력합니다.

결론

이렇게 구조체와 맵을 함께 사용하는 것은 Go 언어에서 유용한 데이터 관리 방법입니다. 구조체를 사용하여 데이터를 구조화하고, 맵을 사용하여 데이터를 조작하고 검색할 수 있습니다. 이를 통해 프로그램에서 필요한 데이터를 효율적으로 관리할 수 있습니다.

더 많은 Go 언어 관련 정보를 알고 싶다면 공식 Go 언어 문서를 참고해보세요.