Golang 제네릭 구조체를 활용한 실제 예제

안녕하세요, 이번 글에서는 Golang의 제네릭 구조체에 초점을 맞추어 실제 사용 사례에 대해 알아보겠습니다. 제네릭 구조체는 다양한 데이터 유형을 유연하게 처리하는 편리한 도구입니다. 아래에서 몇 가지 구체적인 코드 예제를 제공하겠습니다.

제네릭 구조체의 기본

Golang의 제네릭 구조체를 이해하기 위해 먼저 기본적인 예제를 살펴보겠습니다.

package main

import "fmt"

type GenericStruct[T any] struct {
    Value T
}

func main() {
    intStruct := GenericStruct[int]{Value: 42}
    strStruct := GenericStruct[string]{Value: "안녕하세요, 제네릭!"}

    fmt.Println(intStruct.Value)
    fmt.Println(strStruct.Value)
}

이 코드에서는 GenericStruct라는 제네릭 구조체를 정의하고 다른 데이터 유형(int와 string)을 가지는 구조체를 생성합니다.

슬라이스에 제네릭 구조체 적용

다음으로, 슬라이스에 제네릭 구조체를 적용하는 예제를 살펴보겠습니다.

package main

import "fmt"

type GenericStruct[T any] struct {
    Value T
}

func main() {
    intSlice := []GenericStruct[int]{
        {Value: 1},
        {Value: 2},
        {Value: 3},
    }

    strSlice := []GenericStruct[string]{
        {Value: "사과"},
        {Value: "바나나"},
        {Value: "체리"},
    }

    fmt.Println(intSlice)
    fmt.Println(strSlice)
}

이 코드에서는 다른 데이터 유형을 가지는 제네릭 구조체를 슬라이스에 저장하여 서로 다른 유형의 요소를 포함하는 슬라이스를 쉽게 만들 수 있습니다.

제네릭 구조체 메서드

제네릭 구조체에 메서드를 추가할 수도 있습니다. 다음은 그 예제입니다.

package main

import "fmt"

type GenericStruct[T any] struct {
    Value T
}

func (gs *GenericStruct[T]) PrintValue() {
    fmt.Println(gs.Value)
}

func main() {
    intStruct := GenericStruct[int]{Value: 42}
    strStruct := GenericStruct[string]{Value: "안녕하세요, 제네릭!"}

    intStruct.PrintValue()
    strStruct.PrintValue()
}

이 코드에서는 PrintValue 메서드를 제네릭 구조체에 추가하고 제네릭 방식으로 값을 출력합니다.

제네릭 구조체의 이점

제네릭 구조체를 사용하면 다른 데이터 유형에 대해 공통 코드를 재사용하고 코드의 중복을 줄일 수 있습니다. 동시에 타입 안전성을 유지하면서 코드의 유연성을 향상시킬 수 있습니다.

이러한 코드 예제를 참고하여 Golang의 제네릭 구조체 사용 방법을 탐색해보세요. 제네릭 구조체는 여러 상황에서 효과적으로 사용할 수 있는 강력한 도구입니다.

タイトルとURLをコピーしました