This is an example of the decoator pattern in Go. The code is based on Tomas Senerts talk, Embrace the Interface at GopherCon 2015 https://www.youtube.com/watch?v=xyDkyFjzFVc
It gives a great example how you can seperate concerns into small bits of code that find the right balance between abstraction and pragmastism. In my opnion these two things are not mutually exclusive.
Another article outlining this pattern https://medium.com/@matryer/writing-middleware-in-golang-and-how-go-makes-it-so-much-fun-4375c1246e81#.glbiyefw2