タグ

ブックマーク / qiita.com/nirasan (3)

  • こわくない!今日からはじめるGo言語コード生成 - Qiita

    はじめに Go言語のできる人が「ルーティング定義からコントローラを自動生成している」とか言っているのを聞いていてすごい人はすごいなー、とか思っていたけど自分でツールを作ってみてコード生成とか意外とできるということがわかった。 なのでコード生成をやったことがない人向けにコード生成意外と大変じゃないよっていうのが伝わるといいなと思って手順をまとめてみる。 コード生成の大まかな手順 ソースコードを読み込んで構文木データに変換する 構文木データから目的の構文データを検索する 構文データを使ってソースコードを生成する ソースコードを読み込んで構文木データに変換する go/parser などを使ってソースコードの文字列を構文木データに変換する。 構文木データとは 構文木データとはソースコードをツリー状のデータ構造に置き換えたもので例えば以下のようなもの。 元になるソースコード package main

    こわくない!今日からはじめるGo言語コード生成 - Qiita
  • ピーマンとハトと数学を Go 言語で試す - Qiita

    はじめに 先日 NHK ETV で放送された "大人のピタゴラスイッチ" で "ピーマンとハトと数学" と題して "ピーマンの袋がどれもほぼ同じ重さになる仕組み" について解説があり面白かった。 ピーマンの袋がどれもほぼ同じ重さになる仕組み 12個のピーマンを "組み合わせ計量装置" の上に置くと 150g になる組み合わせを計算して排出する仕組みになっている。 "組み合わせがない場合もあるのでは?" という問に対しては "98% の確率で組み合わせがあることが数学が保証している" ということ。 "98%" の根拠が知りたかったが確率の計算がわからなかったので、実際に Go 言語で試して検証してみることにした。 解法 とりあえずすぐ思いついたのは愚直に全組み合わせを試すパターン。 togetter みてたら "subset sum" というキーワードが出てきたので検索。 部分和問題 という

    ピーマンとハトと数学を Go 言語で試す - Qiita
  • Go 言語 reflect チートシート - Qiita

    はじめに Go 言語の reflect パッケージは動的に型や値を扱いたい場合に便利です。 このページでは reflect パッケージの詳しい Example をチートシートとしてまとめました。 ご案内 このページの内容を別サイトにまとめなおしました。 目的別に項目を分けたのでやりたいことからコードを逆引きできます。 また、サイト上でコードを即時実行できるように The Go Playground の実行フォームを埋め込んだので、気軽にコードをお試しいただけます。 目次 型情報を値として取得する 型情報を比較する 任意の型の値を引数とする関数を定義する リフレクションで変数を更新する 構造体のフィールド一覧を取得する 構造体のフィールドのタグ情報を取得する ゼロ値であるかを調べる ゼロ値を取得する リフレクションで数値を扱う リフレクションで文字列を扱う リフレクションで配列を扱う リフレ

    Go 言語 reflect チートシート - Qiita
  • 1