Hello, in Python I may define context managers which do stuff before and after an action has taken place.
E.g.: ``` class MyContext(object): def __enter__(self): print("Entering context") def __exit__(self, extype_unused, value_unused, traceback_unused): print("Exiting context") if __name__ == "__main__": with MyContext(): print("Inside the context") ``` will print: Entering context Inside the context Exiting context A Golang equivalent I came up with is something like (see https://play.golang.org/p/epBGtwZWuln as well) ``` package main import "log" type Context interface { __entry__() __exit__() } func WithContext(context Context, f func() error) error { context.__entry__() defer context.__exit__() return f() } type MyContext struct { message string } func (context *MyContext) __entry__() { log.Print("Entering ", context.message) } func (context *MyContext) __exit__() { log.Print("Exiting ", context.message) } func main() { var a string WithContext(&MyContext{"Hallo"}, func() error { log.Print("Inside context") a = "Var from context" return nil }) log.Print(a) } ``` Is this idiomatic or are there better ways to implement stuff like this? Regards Mirko -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.