hitode909の日記

以前はプログラミング日記でしたが、今は子育て日記です

初めてのGo言語

コンテキストのwithValueって変数を引き回すためによく使われているけど、よそで使っている場所と、偶然名前が被ったらどうなるの?というのが気になっていたのだけど、そんな心配はなくて、それぞれ別の型をつけられるので衝突しない、ということだった。
Perlを書いてると、Scope::Containerに、引き回すのがめんどうな値を入れたりするけど、こっちは名前が同じなら同じ値を取り出せてしまう。名前が同じでもidが衝突しないよう管理してくれる仕組みがあったら便利な気がする。
contextってReactにもあって、親から子にデータを一足飛びに渡すのに使ったりするけど、contextという名前の概念が登場する機会が増えているような気がする。
useContextするときには、contextの中身はせっせと渡していくんじゃなくて、ファイルの上の方で定義するとか、どこかでexportしておいてimportして使う、というグローバル変数のような使い方なので、渡し方は違う。

ゴルーチンの章まで読んでみたら、並列に指定したURLをダウンロードしてまわるスクリプトなどを書けるようになって、役立つスピードが早かった。
WaitGroupとチャンネルを使って書いてたら、並列数を絞りたいなら、ErrGroupにはSetLimitがあるので簡単に書けますよ、って同僚から教えてもらえた。
そんな便利メソッドがあるならWaitGroupにも足してくれたら良いのに、並列数を絞りたいならErrGroup、というのは、エラーって名前についてるし、なんか変じゃない?と思うけど、WaitGroupは標準ライブラリなので気軽にAPIを足せない、ErrGroupは拡張ライブラリなので気軽に足せる、という違いがあるのかもしれない。