diff --git a/structural/decorate.go b/structural/decorate.go new file mode 100644 index 0000000..4dccbe6 --- /dev/null +++ b/structural/decorate.go @@ -0,0 +1,28 @@ +package main + +type Object func(int) int + +func LogDecorate(fn Object) Object { + return func(n int) int { + log.Println("Starting the execution with the integer", n) + + result := fn(n) + + log.Println("Execution is completed with the result", result) + + return result + } +} + +func Double(n int) int { + return n * 2 +} + +func main(){ + f := LogDecorate(Double) + f(5) +} + + +// Starting execution with the integer 5 +// Execution is completed with the result 10