안녕하세요, 이번 글에서는 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의 제네릭 구조체 사용 방법을 탐색해보세요. 제네릭 구조체는 여러 상황에서 효과적으로 사용할 수 있는 강력한 도구입니다.