我有一个interface:
type encoder interface {
encode() ([]byte, error)
}
encoderreturn an 的一些实现error:
type fooEncoder string
func (e fooEncoder) encode() ([]byte, error) {
if isSomeValidityCheck(e) {
return []byte(e), nil
}
return nil, fmt.Errorf("Invalid type!")
}
但是对于其他人来说,永远不会有错误:
type boolEncoder bool
func (e boolEncoder) encode() ([]byte, error) {
if e {
return []byte{0xff}, nil
}
return []byte{0x00}, nil
}
说一个方法将返回一个错误是惯用的/正确的,即使它总是是nil,所以它符合一个interface?我只boolEncoder.encode返回一个error,以便它符合encoder并可以这样使用。
慕运维8079593