다음과 같은 타입이 있다고 치십시다.
type Boy int func (b Boy) fight() { fmt.Println("Kaho-!") } func (b Boy) laugh() { fmt.Println("Kuwek-!") } type Girl float32 func (b Girl) laugh() { fmt.Println("kaka~") }
또 다음과 같은 interface가 있다고 치자구요.
type Laughter interface { laugh() } type Fighter interface { fight() }
이제 main 함수에서 Boy와 Girl 타입에 대한 객체를 정의할껀데요. 이 2개의 객체 변수가 Laughter, Fighter 인터페이스를 충족하는지의 여부를 검사하는 코드는 아래와 같습니다.
func main() { var b Boy var g Girl if _, ok := interface{}(b).(Laughter); ok { fmt.Println("Boy is laughter.") } else { fmt.Println("Boy is not laughter.") } if _, ok := interface{}(g).(Fighter); ok { fmt.Println("Girl is fighter.") } else { fmt.Println("Girl is not fighter.") } }
그 결과는 예상하는 것처럼 아래와 같습니다.
Boy is laughter. Girl is not fighter.