Safe to refer to values in outer function from inner function?
<p>I am moving to Go from Node.js and I am concerned whether a construct that I would use in Node is safe to do in Go and whether there is a more idiomatic way to accomplish the same thing.  I am using the Echo framework and want to set a route specific struct that will be available within the context object.  I could generate the struct for every call within middleware, but it's expensive to do so.  Instead, I set the struct once in an outer func that then returns an inner func that refers to the struct in the outer func.  My hope is that I then only incur the generation cost once and then have the correct struct associated with my route for every call. </p>

<pre><code>e.POST(path, POST.GenericPostHandler, func(next echo.HandlerFunc)  echo.HandlerFunc {
    operation := getOperationMap(path)
    return func(c echo.Context) error {
        c.Set("op", operation)
        return next(c)
    }
})
</code></pre>

<p>Are there any concerns with this code?  Will it cause problems with GC?  Is there a more efficient way to accomplish the same thing?  I assume a copy of the struct is made every time the middleware is called.  </p>