タグ

GoLangとfunctionalに関するclavierのブックマーク (3)

  • Go の 構造体定義から Functional Options Pattern のコードを自動生成する CLI ツールを作った

    Go でオプション引数を実現したいときによく Functional Options Pattern が使われるかと思います。このデザインパターンは便利な一方、構造体の中でオプション引数を用意したい全てのフィールドに対して、オプション引数用の関数を実装する必要があり、記述すべきコードが多くなりがちです。 この問題を解決すべく、Functional Options Pattern を実現するためのコードを自動生成する CLI ツール 「foggo」を作りました。 Functional Options Pattern とは Go はそのシンプルな言語仕様から、オプション引数を提供していません。 オプション引数はデフォルト引数やオプションパラメータとも呼ばれ、Python だと可変長引数である *args や *kargs のことを指します。 通常の関数であれば特に問題ないのですが、構造体の初期化

    Go の 構造体定義から Functional Options Pattern のコードを自動生成する CLI ツールを作った
  • Go言語のFunctional Option Pattern - Qiita

    オプション パッケージを作る際、柔軟性を持たせるためにオプションを持たせたい時がしばしばあります。 しかしオプションは知っての通り設定しないことが少なくありません。 単にコンストラクタに並べるようでは無用な複雑さをはらむことになります。 JavaなどではOptional Parameterなどのように、デフォルト値が指定できる機能があります。 機能の厳選されたgo言語ではそのような機能はありませんが、 "Self Referential Functions Design"というテクニックがあり、 それについての記事がRob Pike氏の記事を筆頭にいくつか説明されています。 オプションと相性が非常に良いため、合わせて"Functional Option Pattern"とも呼ばれています。 Dave Cheney氏の記事を参考におおまかに説明したいと思います。 様々な解決策 あるServe

    Go言語のFunctional Option Pattern - Qiita
  • @tobyhede

    Codes Rust. Many Cryptography & Databases. Likes History. Lifts heavy things, puts them down again. Plays the drums. Occasionally makes music. Random Items of Interest polyglot programmer many buzzwords enthusiastic drummer ̶o̶c̶c̶a̶s̶i̶o̶n̶a̶l̶ ex powerlifter older than he seems frequently hilarious (citation needed)

    @tobyhede
  • 1