各FunctionX
は(ほとんどの場合、ポインタ受信機あなたが変異している場合状態)レシーバーの方法であることがあり、それらをそれぞれのリターンを持っているだろう、これを行うための唯一の方法受信機。そう
type someNumber struct {
n int32
}
func (s *someNumber) Add(i int32) *someNumber {
s.n += i
return s
}
func (s *someNumber) Multiply(i int32) *someNumber {
s.n *= i
return s
}
func (s *someNumber) Subtract(i int32) *someNumber {
s.n -= i
return s
}
func main() {
num := &someNumber{n: 0}
result := num.Add(5).Multiply(4).Subtract(10)
fmt.Println(result.n)
}
ようにあなたが設定し、エラーsomeNumber
上だけでなく、最後にそれをチェックすることができます。
エラーを実際に実行する場合は、このような処理を行う必要があります。
func Function1(a int, err error) (int, error) {
if err != nil {
return a, err
}
return a, nil
}
func Function2(a int, err error) (int, error) {
if err != nil {
return a, err
}
return a*2, nil
}
func Function3(a int, err error) (int, error) {
if err != nil {
return a, err
}
return a*3, nil
}
func main() {
a, err := Function3(Function2(Function1(1, nil)))
fmt.Println(a, err)
}
しかし、エラーモナドがもたらす行動のタイプを探しているようで、Goには存在しません。