interface{}

判断某个对象是否实现了某个接口

package main

import "fmt"

type Do interface {
	do()
}

type A struct{}

func (a A) do() {}

type B struct{}

func main() {
	var do interface{} = A{}
	_, ok := do.(Do)
	if ok { // true
		fmt.Println("true")
	} else {
		fmt.Println("false")
	}

	do = B{}
	_, ok = do.(Do)
	if ok { // false
		fmt.Println("true")
	} else {
		fmt.Println("false")
	}
}

类型断言
x.(T)
x是interface{}类型,T是要断言的类型。

不能把 interface{}和nil直接进行比较

interface{}有类型和值这两个成员变量。只有两个都是nil的 interface{}才是nil。
如果某个具体的对象赋值给 interface{},那么该 interface{} 的类型不是 nil。

posted on 2023-07-15 08:13  王景迁  阅读(15)  评论(0编辑  收藏  举报

导航