登录
首页 >  Golang >  Go问答

在函数签名中传递相同接口类型作为参数

来源:stackoverflow

时间:2024-03-07 18:00:26 171浏览 收藏

大家好,我们又见面了啊~本文《在函数签名中传递相同接口类型作为参数》的内容中将会涉及到等等。如果你正在学习Golang相关知识,欢迎关注我,以后会给大家带来更多Golang相关文章,希望我们能一起进步!下面就开始本文的正式内容~

问题内容

我正在尝试使用 golang 中的接口实现来实现差异逻辑。我需要找到不同结构的差异。

所以我正在尝试这样的事情

package main

import "fmt"

type foo interface {
    diff(f foo) bool
}

type baz struct {
    i int
}

func (b baz) diff(eb baz) bool {
    return b.i != eb.i
}

func main() {
    b1 := baz{1}
    b2 := baz{2}

    if b1.diff(b2) {
        fmt.Println("data is different")
    } else {
        fmt.Println("data is same")
    }
}

工作正常。但我需要确认golang是否支持这种方法接受相同接口的接口实现。


解决方案


在 golang 中,它的核心没有 OOP 概念,因此它没有实现。参考号 https://tour.golang.org/methods/10 因此,当您实现接口时,它将与其他语言有所不同,这意味着您的类将拥有代表接口方法的所有方法 但是对于 golang,当你的结构体与接口中的方法具有相同的方法时,那么你的结构体的方法将显式地满足接口,这样你就可以使用结构体的方法。

如果你的结构体的方法多于接口方法,当你调用接口方法时,你仍然可以使用你的方法(满足接口)。

今天关于《在函数签名中传递相同接口类型作为参数》的内容介绍就到此结束,如果有什么疑问或者建议,可以在golang学习网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!

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