ブックマーク / motemen.hatenablog.com (1)

  • Go で reflect パッケージを使わずにジェネリックな関数を実現する - 詩と創作・思索のひろば

    あけおめ〜。Go 界においてジェネリクスを求めるのは(今のところ)はかない望みでしかないし、もちろん重々承知していることですが、それでもときどき複雑なものを書こうとするとどうしても複数の型に対応する関数が欲しくなる。そこでこの冬休みになにかうまい方法はないかと考えて、作ってみました。 要件 今回はこんな関数が実現したくなりました。(擬似コードです) // map[string]int とか map[string]foo.Bar を受けつける func keys(m map[string]T) []string { keys := make([]string, 0, len(m)) for k := range m { keys = append(keys, k) } return keys } そしてこれを実現するためのアプローチを以下のように定めました。 reflect パッケージを使わ

    Go で reflect パッケージを使わずにジェネリックな関数を実現する - 詩と創作・思索のひろば
  • 1