2023/06/30

読んだ記事

  • math/rand/v2: a new API for math/rand and a first v2 for std · golang/go · Discussion #60751
    新しいプロポーザルのmath/rand/v2のv2の位置はv2/math/randのほうがいいのでは?という話。
    rsc標準パッケージ個別にバージョンをわけるべき。mathパッケージ全体をテストしたいのにv2だけ別のパッケージになってしまう。実際はmathパッケージの一部の別のバージョンであるはず。
    パッケージがv1で一部だけ後方互換性のない変更を行う場合、github.com/hoge/fuga/v2のようなバージョンにするのがいいんじゃない、とのこと。
    うじゃうじゃ発生するとだるそうだけど、一部ならいいんかな。

  • Initializing Large Static Maps in Go | DoltHub Blog
    巨大なマップだとオーバーヘッドが大きいから対策したよってはなし。

    • 配列で2分探索する

    • 巨大な場合、ファイルにはいてembedしたデータを読む

    • sync.Oneceで遅延ロードする

      var data []int
      func get() []int {
        sync.Once(func() {
          data = []int{1, 2 ,3}
        })
        return data
      }
      

    外部ファイルに依存するの他のプログラムが利用するにはしんどいので最小完全ハッシュを使うよって話。初期化は重いので気になるなら遅延ロードしようね。