Decorator Pattern in Golang
Decorator パターン既存のオブジェクトに新しい機能や振る舞いを動的に追加することを可能にする。 関数Aに一つの関数Bのタイプを引数として渡して、関数Aに機能追加した後に、同じタイプの関数を返す仕組み。
したのコードは文字列を処理するために、一個の機能を追加する(文字列を小文字にする)。
package main import ( // "encoding/base64" "fmt" "strings" ) type StringManipulator func(string) string func ToLower(m StringManipulator) StringManipulator { return func(s string) string { lower := strings.ToLower(s) return m(lower) } } func ident(s string) string { return s } func main() { s := "Hello Playground" var fn StringManipulator = ident fmt.Println(fn(s)) fn = ToLower(fn) fmt.Println(fn(s)) } https://stackoverflow.com/questions/45944781/decorator-functions-in-go