登录
首页 >  Golang >  Go问答

嵌套结构、函数参数、多样性

来源:stackoverflow

时间:2024-02-21 12:21:24 162浏览 收藏

欢迎各位小伙伴来到golang学习网,相聚于此都是缘哈哈哈!今天我给大家带来《嵌套结构、函数参数、多样性》,这篇文章主要讲到等等知识,如果你对Golang相关的知识非常感兴趣或者正在自学,都可以关注我,我会持续更新相关文章!当然,有什么建议也欢迎在评论留言提出!一起学习!

问题内容

我有一个父结构:

type bigpoly struct{
    value []*ring.poly
}

还有两个子结构:

type plaintext bigpoly
type ciphertext bigpoly

我想要有接受明文和密文的函数。我的解决方案是使用以下形式的函数:

func Add(a *Ciphertext, b interface{}) (*Ciphertext)

并使用 switch-case 来决定要做什么,但我发现这很麻烦,如果输入数量增加,可能会导致非常复杂的情况。

但是,由于明文和密文具有完全相同的结构和内部变量,只是名称不同,是否可以创建一个以更清晰的方式接受明文和密文的函数? ie。它不关心它是 plaintext 还是 ciphertext 类型,只要它是 bigpoly 类型即可。


解决方案


使用非空接口:

type poly interface {
    value() []*ring.poly
}

然后将您的结构定义为:

type bigpoly struct{
    value []*ring.poly
}

func (p *bigpoly) value() []*ring.poly {
    return p.value
}

您的消费者为:

func Add(a, b Poly) Poly {
    aValue := a.Value()
    bValue := b.Value()
    // ... do something with aValue and bValue
}

文中关于的知识介绍,希望对你的学习有所帮助!若是受益匪浅,那就动动鼠标收藏这篇《嵌套结构、函数参数、多样性》文章吧,也可关注golang学习网公众号了解相关技术文章。

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