[準備]
⓪メソッドらがある
①インターフェースに使いたいメソッドらを指定
②ストラクトを作る
③ストラクトを型にメソッドの処理をつくる (オーバーライド的な?)
[呼び出し]
①インターフェース型の変数を作る
②ストラクトを設定する
③そのストラクトの値でメソッドが実行される
メリット
・インターフェースの型を指定することで利用するメソッド、返り値を指定できる
・異なるストラクトでメソッドが利用できる
参考リンク:
https://dev.classmethod.jp/articles/golang-6/
https://qiita.com/rtok/items/46eadbf7b0b7a1b0eb08
https://medium.com/eureka-engineering/golang-embedded-ac43201cf772
◎ Stringer interface
・fmtパッケージに入っているインターフェース
文字を返すString()メソッドを持っている
・以下のようにインターフェースのメソッドを利用できる。
下記のように表示したいデータのみ表示させることができる。
package main
import "fmt"
type Cat struct {
Name string
Age int
}
// String()メソッドを利用すると名前だけ表示し
// 他の値は表示しないようにしたりできる
func (a Cat) String() string {
return fmt.Sprintf("My name is %v.", a.Name)
}
func main() {
cat := Cat{"Kuro", 18}
fmt.Println(cat)
}
結果 (18は表示されない)
My name is Kuro.
◎ まとめ
予めあるメソッドはインターフェースを利用して
異なるストラクトでメソッドを定義できる