この記事は 下記の観点による個人的なsamber/loのチートシートになります。
-
A → B
というデータ変換の観点で整理 - 個人的によく使うヘルパーだけに絞ってる
- 別パッケージで同一のものがあればまとめる
背景
Go Way では愚直に for文を回すことが美徳とされるが、モダン言語経験者からすると高階関数やヘルパーが欲しくなることが多いと思う(個人的感想)。
built-inでもヘルパーが増えてきているが機能的にまだまだ足りていないし、意図的に弾かれてしまってるものもある。
それなら、じゃあ samber/lo を使おうと思うわけなのだが機能が微妙に多いわりに、整理の区分が個人的にわかりにくいと感じていた。そのため、自分用にチートシートをまとめた。
from slice
-
slice
toslice
- lo:Filter / lo:Reject ( slices:DeleteFunc) / lo:FilterReject
- lo:Map
- lo:UniqBy
-
lo:Flatten (
[][]T → []T
) - lo:FilterMap
-
lo:FlatMap (
[]T → [][]T → []T
)
-
slice
tostruct
-
slice
tomap
-
slice
tobool
-
slice
toany
- lo:Reduce (Go Way から離れすぎることが多いので使う時は注意)
from map
-
map
tomap
-
map
toslice
ptr
helper
Appendix
-
slice + slice
toslice + slice
- lo:DifferenceBy / lo:IntersectionBy (ロジックが複雑な時に欲しい時があるのだが、実装PRのマージ待ち)