小编fab*_*bem的帖子

理解 Go 中的多态性

我想我陷入了思考以下问题的多态性解决方案中:

假设我有BaseTX struct一个交易字段。现在我有两种特殊类型的交易:RewardTX structAllowanceTX struct

RewardTX struct此刻只有 的组成BaseTX struct

AllowanceTX struct具有BaseTX struct和 的组成AddField

我还有一个函数logicAndSaveTX(),它对来自的字段有一些逻辑,BaseTX但最后是使用序列化整个对象json.Marshal()并将其保存在byte[]某处。

type TXapi interface {
    logicAndSaveTX()
}

type BaseTX struct {
    Field1 string
    Field2 string
}

type RewardTX struct {
    BaseTX 
}

type AllowanceTX struct {
    BaseTX 
    AddField string
}

func (tx BaseTX) logicAndSaveTX() {
    // logic on BaseTX fields; simplified:
    tx.Field1 = "overwritten"
    tx.Field2 …
Run Code Online (Sandbox Code Playgroud)

oop polymorphism go

-1
推荐指数
1
解决办法
584
查看次数

标签 统计

go ×1

oop ×1

polymorphism ×1