Go
投稿日

【Go】関数型のインターフェース

今までは構造体に対してインタフェースを実装していきました。

インターフェースは任意の型に対して実装できます。今回は関数型に対してインターフェースを実装してみます。
使い所については分かり次第記載します。

関数型のインターフェース

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
}

コメントを残す

メールアドレスが公開されることはありません。

© DeNnie.Lab All Rights Reserved.