2 回答
TA贡献1851条经验 获得超3个赞
你的代码没有按照编写的方式编译(有很多缺失的类型),所以我无法完全测试这段代码,但我希望沿着这些路线返回一些东西,以典型的 Go 方法返回,而不是使其err成为另一种类型,很不寻常并且有点令人困惑:
func (n *namePreclaimRLP) ReadRLP(s *rlp.Stream) (aID, cID string, err error) {
var blob SomeType // Depends on what blob actually is
if blob, err = s.Raw(); err != nil {
return
}
if err = rlp.DecodeBytes(blob, n); err != nil {
return
}
if _, aID, err = readIDTag(n.AccountID); err != nil {
return
}
_, cID, err = readIDTag(n.CommitmentID)
return
}
我会删除Error()这里的函数和err字段。namePreclaimRLP不是一种错误。感觉你正在滥用那里的界面。
TA贡献1877条经验 获得超1个赞
使用以下代码可以减少代码量,并通过返回错误来保留更惯用的 API。
func (n *namePreclaimRLP) ReadRLP(s *rlp.Stream) (aID, cID string, err error) {
se := func(e error) {
if e != nil {
err = e
}
}
blob, e := s.Raw()
se(e)
se(rlp.DecodeBytes(blob, n))
_, aID, e = readIDTag(n.AccountID)
se(e)
_, cID, e = readIDTag(n.CommitmentID)
se(e)
return
}
- 2 回答
- 0 关注
- 124 浏览
添加回答
举报