Я хочу создать API цепочки методов в Go. Во всех примерах я могу найти, что прикованные операции кажутся всегда успешными, что я не могу гарантировать. Поэтому я стараюсь расширить их, чтобы добавить возвращаемое значение ошибки.
Если я сделаю это так,
package main
import "fmt"
type Chain struct {
}
func (v *Chain)funA() (*Chain, error ) {
fmt.Println("A")
return v, nil
}
func (v *Chain)funB() (*Chain, error) {
fmt.Println("B")
return v, nil
}
func (v *Chain)funC() (*Chain, error) {
fmt.Println("C")
return v, nil
}
func main() {
fmt.Println("Hello, playground")
c := Chain{}
d, err := c.funA().funB().funC() // line 24
}
Компилятор сообщает мне chain-err-test.go:24: multiple-value c.funA() in single-value context
и не будет компилироваться. Есть ли хороший способ, чтобы funcA, funcB и funcC могли сообщать об ошибке и останавливать эту цепочку?