GO · 기초 문법
타입 제약 (Type Constraints)
인터페이스를 타입 제약으로 사용하여 제네릭 함수에서 허용하는 타입을 제한합니다. ~로 기저 타입을 포함합니다.
기초 문법고급constraintsgenericstildeordered
핵심 설명
인터페이스를 타입 제약으로 사용하여 제네릭 함수에서 허용하는 타입을 제한합니다. ~로 기저 타입을 포함합니다.
Go code
package main
import (
"fmt"
"golang.org/x/exp/constraints"
)
// 커스텀 제약 정의
type Number interface {
~int | ~int64 | ~float64
}
func Sum[T Number](nums []T) T {
var total T
for _, n := range nums {
total += n
}
return total
}
// constraints.Ordered 사용
func Max[T constraints.Ordered](a, b T) T {
if a > b {
return a
}
return b
}
type Score int // ~int 덕분에 사용 가능
func main() {
fmt.Println(Sum([]int{1, 2, 3})) // 6
fmt.Println(Sum([]float64{1.1, 2.2})) // 3.3
fmt.Println(Sum([]Score{10, 20, 30})) // 60
fmt.Println(Max("apple", "banana")) // banana
}학습 팁
~int의 ~는 기저 타입이 int인 모든 타입(예: type Score int)을 포함합니다.
주의할 점
타입 제약 없이 [T any]를 사용하면 +, > 등의 연산자를 사용할 수 없습니다. 적절한 제약을 지정하세요.
자주 묻는 질문
타입 제약 (Type Constraints)란 무엇인가요?
인터페이스를 타입 제약으로 사용하여 제네릭 함수에서 허용하는 타입을 제한합니다. ~ 로 기저 타입을 포함합니다.
타입 제약 (Type Constraints) 학습 시 주의할 점은 무엇인가요?
타입 제약 없이 [T any] 를 사용하면 + , > 등의 연산자를 사용할 수 없습니다. 적절한 제약을 지정하세요.
Continue Learning
Go 학습을 이어가세요
총 200개의 독립 HTML 학습 문서 중 하나입니다. 각 문서는 고유 URL과 canonical 메타데이터를 가집니다.