golang 断言判断

package main

import (
	"fmt"
)
type Ifly interface{
	Fly()
}
type Name interface{
	Data()
}
type Demo struct {
}

func (d Demo)Data()  {
	fmt.Println("OK")
}
func (d Demo)Fly()  {
	fmt.Println("fly")
}

func main() {
	var s Name= Demo{}
	// 断言判断 s 是否 Name 接口
	if f,ok := s.(Name);ok {
		fmt.Println(f)
		fmt.Println(s)
		fmt.Println("N是 Name 接口的实现")
	}else {
		fmt.Println("N不是 Name 接口的实现")
	}

	if f,ok := s.(Ifly);ok {
		fmt.Println(f)
		fmt.Println(s)
		fmt.Println("N是 Ifly 接口的实现")
	}else {
		fmt.Println("N不是 Ifly  接口的实现")
	}
}
相关文章
相关标签/搜索