GO · 기초 문법
타입 추론
Go 컴파일러는 인자 타입에서 타입 파라미터를 자동 추론합니다. 명시적 타입 인자가 불필요한 경우가 대부분입니다.
기초 문법중급type-inferencegenericsfilterzip
핵심 설명
Go 컴파일러는 인자 타입에서 타입 파라미터를 자동 추론합니다. 명시적 타입 인자가 불필요한 경우가 대부분입니다.
Go code
package main
import "fmt"
func Filter[T any](slice []T, pred func(T) bool) []T {
var result []T
for _, v := range slice {
if pred(v) {
result = append(result, v)
}
}
return result
}
func Zip[A, B any](a []A, b []B) []struct{ First A; Second B } {
n := len(a)
if len(b) < n { n = len(b) }
result := make([]struct{ First A; Second B }, n)
for i := 0; i < n; i++ {
result[i] = struct{ First A; Second B }{a[i], b[i]}
}
return result
}
func main() {
// 타입 추론: [int] 생략 가능
evens := Filter([]int{1, 2, 3, 4, 5}, func(n int) bool {
return n%2 == 0
})
fmt.Println(evens) // [2 4]
pairs := Zip([]string{"a", "b"}, []int{1, 2})
fmt.Println(pairs)
}학습 팁
타입 추론이 실패하는 경우(반환 타입만으로 추론 필요) 명시적으로 타입 인자를 제공하세요: Func[int](...)
주의할 점
제네릭 타입(구조체)을 인스턴스화할 때는 타입 추론이 불가능합니다. Stack[int]{}처럼 항상 타입을 명시해야 합니다.
자주 묻는 질문
타입 추론란 무엇인가요?
Go 컴파일러는 인자 타입에서 타입 파라미터를 자동 추론합니다. 명시적 타입 인자가 불필요한 경우가 대부분입니다.
타입 추론 학습 시 주의할 점은 무엇인가요?
제네릭 타입(구조체)을 인스턴스화할 때는 타입 추론이 불가능합니다. Stack[int]{} 처럼 항상 타입을 명시해야 합니다.
Continue Learning
Go 학습을 이어가세요
총 200개의 독립 HTML 학습 문서 중 하나입니다. 각 문서는 고유 URL과 canonical 메타데이터를 가집니다.