Gonerics의 아쉬운 점
트위터에 썼던 글인데 블로그 글로 쓸만한 가치가 있는 것 같아서 가져온다.
단점:
- 반환 타입 포지션에서 유니온 느낌의 타입 제약을 걸 수 없는 점
type Foo interface {
string|number
}
func foo() Foo {}
이게 불가능하다는 소리다.
- 인터페이스를 타입 제약으로 사용할 수 없는 점
Tagged union으로 사용할 수 없다는 소리다. 러스트로 나타내면 간단한데...
- 정의 오류를 사용 (캐스팅) 시점에서 알려주는 점
type Foo interface {
string
}
func foo() {
var bar interface{}
// v,ok := bar.(Foo)
}
위 코드는 에러를 뱉지 않는다.
- nil일 수 있는 타입을 나타낼 수 없어서 인터페이스랑 같이 쓰면 []*T 꼴이 되는 점