Flexible Caching in Go with Interfaces