Go/メソッドチェイン
表示
< Go
メソッドチェイン
[編集]Goのメソッドは、メソッドチェイン(method chaining)が可能です。
- メソッドチェイン
package main import "fmt" type Student struct { name string age int } func (s Student) PrintName() Student { fmt.Printf("Name: %v\n", s.name) return s } func (s Student) PrintAge() Student { fmt.Printf("Age: %v\n", s.age) return s } func main() { list := [...]Student{ {name: "joe", age: 17}, {name: "tom", age: 18}, {name: "alice", age: 17}, } for _, s := range list { s.PrintName().PrintAge() } }
- 結果(例)
Name: joe Age: 17 Name: tom Age: 18 Name: alice Age: 17
28行目がメソッドチェーンです。 メソッド PrintName() と PrintAge() とも戻り値はレシーバと同じ Student で、この様なメソッドは戻り値を次のメソッドのレシーバーにできます。 レシーバーと戻り値の型が一致していなくてもメソッドチェインは可能ですが、型の組合せを慎重に考える必要があります。