登录
首页 >  Golang >  Go问答

如何在Go中检查接口是否被实现了函数?

来源:stackoverflow

时间:2024-02-09 17:57:19 123浏览 收藏

本篇文章主要是结合我之前面试的各种经历和实战开发中遇到的问题解决经验整理的,希望这篇《如何在Go中检查接口是否被实现了函数?》对你有很大帮助!欢迎收藏,分享给更多的需要的朋友学习~

问题内容

我有一个返回接口的构造函数。在某些情况下,该接口并未实际实现其某些功能。尝试调用这些未实现的函数会导致恐慌。我想知道在实际调用函数之前是否有办法检查调用函数是否安全。

这是设置。

package main

type i interface {
    Foo()
    Bar()
}

type s struct {
    i
}

func (r s) Foo() {}

func main() {
    var ii i = &s{}
    ii.Foo() // OK
    ii.Bar() // will panic
}

正确答案


类型 s 嵌入了一个接口变量。任何对 s 未显式声明的接口方法的调用都会出现恐慌,因为嵌入式接口为零。您应该在调用方法之前进行设置:

var ii i=&s{}
ii.i=

所以,这并不是 s 类型未实现的方法。类型 s 将其方法实现委托给 i,即 nil。

终于介绍完啦!小伙伴们,这篇关于《如何在Go中检查接口是否被实现了函数?》的介绍应该让你收获多多了吧!欢迎大家收藏或分享给更多需要学习的朋友吧~golang学习网公众号也会发布Golang相关知识,快来关注吧!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>