다음과 같은 타입이 있다고 치십시다.
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.
