goのinterfaceを学ぶ 〜その1〜
Goのインターフェースが結構複雑だったので整理
interfaceの利用手順
インターフェースを用意する
package main type animal interface { raw() //吠える } func main() { }
構造体と、その構造体に紐づく関数を定義
package main type animal interface { raw() //吠える } func main() { } type object struct { name string age int } func (o *object) row(r string) { fmt.Println(r) }
インターフェース型の引数を受ける関数を用意する
package main type animal interface { raw() //吠える } func main() { } type object struct { name string age int } func (o *object) row(r string) { fmt.Println(r) } func something(interface *animal) { interface.row("rowwwwww") }
↑の関数に構造体を渡す
package main type animal interface { raw() //吠える } func main() { var o = object{name: "cat", age: 3} something(o) // => cat rowwwwww } type object struct { name string age int } func (o *object) row(r string) { fmt.Println(r) } func something(interface *animal) { interface.row("rowwwwww") }