@assiadamo
譬如我现在定义两个 struct, 或者按你的说法是协议
type EncStr struct {
Raw string
Encoded string
}
type DecStr struct {
Encrypted string
Decoded string
}
我要在业务里 Process 他俩,譬如打印出人能看到的信息,也就是在 EncStr 里的 Raw 或 DecStr 里的 Decoded
那我在业务里先定义一个 interface
type Protocol interface {
Print()
}
再定义一个
func Process(p Protocol) {
p.Print()
}
这时候业务里只有他俩就够了
回到前面定义协议的地方,加上下面的内容
func (e *EncStr)Print() {
fmt.Println(e.Raw)
}
func (d *DecStr) Print() {
fmt.Println(d.Decoded)
}
然后你在业务里调用 Process 函数就行了
https://go.dev/play/p/IaPb1GktEsS |