Generally speaking, try to consider how your users will write things
that use your package and not what's actually in it. For instance,
which makes the better API:
controller.New()
or:
controllers.NewController()
The second is redundant, so I'd argue that the first one will look
better in your users code. However, given the example:
byte.Split(b []byte)
vs.
bytes.Split(b []byte)
the second may be more expected because you're operating on a collection.
Of course, both of these are just my opinion, but it's just to
illustrate how I generally think about picking a name. Instead of
"what will my code in the package look like" think "what will my users
write using this package?"
—Sam