今までは構造体に対してインタフェースを実装していきました。
インターフェースは任意の型に対して実装できます。今回は関数型に対してインターフェースを実装してみます。
使い所については分かり次第記載します。
関数型のインターフェース
package main
import (
"fmt"
)
// 関数タイプ定義
type myFuncType func(int, int) int
// インターフェースの定義
type myInterface interface {
calculation(a, b int) int
}
// メソッド定義
func (m myFuncType) calculation(a, b int) int {
return m(a, b)
}
func main() {
// 足し算
var calc myFuncType
calc = addFunc
fmt.Println(calc.calculation(1, 1)) // 2 が表示される。
// 引き算
calc = subFunc
fmt.Println(calc.calculation(2, 1)) // 1 が表示される。
}
// 足し算関数
func addFunc(arg1, arg2 int) int {
return arg1 + arg2
}
// 引き算関数
func subFunc(arg1, arg2 int) int {
return arg1 - arg2
}