I don’t think it’s that uncommon. Let’s say you have a function that handles a request. A common use case is to add permission checks before applying that function. You can write a generic permission check a bit like this:
This would allow you to separate the permission check logic from the business logic. Though to be fair, in Go they prefer to keep things as simple as possible but it’s just to illustrate that these concepts are not that alien.
I don’t think it’s that uncommon. Let’s say you have a function that handles a request. A common use case is to add permission checks before applying that function. You can write a generic permission check a bit like this:
func NeedsPermission(f func(Request) (Response, error), perm string) func(Request) (Response, error) { return func(r Request) (Response, error) { if !check(r, perm) { return nil, NewPermError(perm) } return f(r) } } // elsewhere Bar := NeedsPermission(Foo, "superman")
This would allow you to separate the permission check logic from the business logic. Though to be fair, in Go they prefer to keep things as simple as possible but it’s just to illustrate that these concepts are not that alien.