So we’ve established that context keys should be of an unexported type in your package. That still leaves a lot of options. Which type is ideal? Today we’ll look at some options, and their pros and cons. Before looking at specific types, let’s consider what sorts of things we want from such a type. It must be comparable, or it won’t work as a key. This means we can’t use function or channel types, for example.