That looks pretty cool! Welcome to the fun of substantial Go code. :-)
One of my first projects in Go was to build a Scrabble suggestion algorithm. It also needed a dictionary that allows for arbitrary wildcard searches (both with fixed positions and partially-constrained positions for blanks that come next to other words). Ultimately I rejected a Trie as a data structure for it and went with a Mealy Machine instead, which was a really fun bit of computer science to implement. It's really fast and the dictionary is very small (the 1.3MB "Words with Friends" dictionary becomes 530KB, and it loads almost instantly because its in-memory format is almost identical to its on-disk format).
I've been wanting to open-source the mealy machine implementation anyway, since it's pretty general. It just works on slices of bytes. In fact, I just uploaded it to Google Code Hosting, so you can take a gander and play around to your heart's content:
The "mealy" package has the super basic mealy machine in it. It supports serialization. The "compiledict" program uses a mealy machine to convert a (sorted) text file into a mealy machine and save it to a file. The "scrabble" project actually uses the mealy machine to do scrabble-type searches, and is a really good example of how you can set up your own arbitrarily crazy constraints to do searches using the mealy machine.
One thing that I regret, because I was a real Go novice at the time (and probably still am, truth be told), is that I did a lot of the work by passing channels out of functions to use as iterators. If you choose to not exhaust these iterators completely (e.g., by breaking out early from a "for ... range" loop), then a channel leaks. I haven't had a lot of motivation to change that because the program is intended to run really fast and just exit, but it *is* a deficiency in the way that the library is designed. I'll probably fix that later on.