# Gonerics의 아쉬운 점



트위터에 썼던 글인데 블로그 글로 쓸만한 가치가 있는 것 같아서 가져온다.

단점:

- 반환 타입 포지션에서 유니온 느낌의 타입 제약을 걸 수 없는 점

```go

type Foo interface {
    string|number
}

func foo() Foo {}
```

이게 불가능하다는 소리다.

- 인터페이스를 타입 제약으로 사용할 수 없는 점

Tagged union으로 사용할 수 없다는 소리다.
러스트로 나타내면 간단한데...

- 정의 오류를 사용 (캐스팅) 시점에서 알려주는 점

```go

type Foo interface {
    string
}

func foo() {
    var bar interface{}

    // v,ok := bar.(Foo)
}
```

위 코드는 에러를 뱉지 않는다.

- nil일 수 있는 타입을 나타낼 수 없어서 인터페이스랑 같이 쓰면 []\*T 꼴이 되는 점

