Go の型は First-class ではない、ということにゴールデンウィーク最終日に気づき、悶々としています。(何も Go が悪いわけではない) ことの発端は、以下の様な関数を定義したところから始まります。 func getName(x interface{}) string { return reflect.TypeOf(x).Elem().Name() } この関数に、任意の型のポインタをわたすと、型の名前を取得できます。けど、ポインタを渡さなければならないのですね。 var foo *Foo name := getName(foo) foo は使わないのに! 使わないというのはウソですね。けど、ちょっと違うんですよ。まあこれは私がPython 脳だからであって、別にGoが悪いわけじゃない。 何をしたいかと言うとですね、Google App Engine datastore のクエリ