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 關注
- 152 瀏覽
添加回答
舉報