タグ

golangとastに関するt2y-1979のブックマーク (7)

  • Goにおける静的解析のモジュール化について - Mercari Engineering Blog

    Mercari Advent Calendar 2018 の16日目はメルペイ エキスパートチームの@tenntenn お送りします。 この記事では、Goの静的解析の新しいムーブメントであるgolang.org/x/tools/go/analysisを使ったモジュール化について解説したいと思います。 「静的解析は関係ないや」と思って、タイトルを見てブラウザのタブを閉じようと思ったかもしれませんが、ほとんどのGopherには無関係ではないと思いますので、ぐっと我慢してしばらく間お付き合いください。 静的解析のモジュール化とは Goにはgo vetやgolintなど静的解析ツールが多数あります。 静的解析ツールを用いることで、プログラムを実行せずにバグになりうる箇所を検出することができます。 実際に、コードレビューを行う際にCIで静的解析ツールを実行している方も多いかと思います。 Goは標準で

    Goにおける静的解析のモジュール化について - Mercari Engineering Blog
  • Go言語とJSON - Qiita

    誰がこんなもん欲しがるって言うんだよォー!! クライアント側(JavaScriptとかだ)が明らかに困るだろ! 現状の確認 素直なコードとJSON 先のJSONは以下のようなコードで生成した。 package main import ( "encoding/json" "fmt" ) type Sample struct { Id int } func main() { data := Sample{1} bytes, err := json.Marshal(data) if err != nil { return } fmt.Println(string(bytes)) } Go言語がわからない人でもきっとなんとなく読めるだろう。 素直だ。わかりやすい。このコードが"Id"ではなく"id"というkeyでJSON生成してくれれば何も問題はなかったのに。 少し書くのがめんどいコードとJSON

    Go言語とJSON - Qiita
  • GoのためのGo

    Go言語はシンプルさを念頭にデザインされた言語です。仕様は単純明瞭さのために小さく収められていますが、そのため表現力に欠けているとか、コードが冗長になるという印象を持つ人も多いでしょう。有名なところでは、ジェネリクスや例外といった機能が(今のところ)存在しないことが問題にされることが多いようです。 一般に、ソフトウェアエンジニアリングというものは書かれる言語だけに依るものではありません。視点を拡げてGoを取りまくツール群を含めて見てみると、go fmt や goimports といったツールが広く使われていること、また go generate コマンドの存在などを見ても、Goという言語には、人間のプログラミングを機械によってさまざまな面から補助しようという態度があります。

  • GoのASTを使ってパッケージのメンテナンスを考える - YAMAGUCHI::weblog

    はじめに こんにちは、Go界の骨盤職人です。buildersconにmattnさんがいらしていたということで生mattnさんに謁見したかったのですが、諸事情でこの日程はどうしても都合がつかず、参加できなかったことが非常に残念でいまでも悔やんでいます。 さて、Goは安定して開発が進んでおり、いまは安定バージョンが1.8にもなろうというところです。セルフホスティングも1.5で達成し、GCの高速化も順調に進んでいる中、いまだにGoの問題として挙げられるものとして「パッケージバージョンの管理」があります。今日はその辺の話をしようと思います。 TL;DR go パッケージを使って、自分たちが書いたコードが依存してるパッケージを明らかにし、依存先パッケージの更新に追従していこう。 前置き 以下の話はGoをプロダクションで中規模〜大規模に利用している環境を想定しており、細かな閉じられたパッケージのみを開

    GoのASTを使ってパッケージのメンテナンスを考える - YAMAGUCHI::weblog
  • Go と reflect と generate - Qiita

    この記事は Go Advent Calendar 2015 5 日目の記事です。 はじめに Go にはジェネリクスがありませんが、任意の型に対して共通の処理を提供したいことがあります。 例えば ORM ライブラリで User テーブルと Blog テーブルを struct で表す場合を考えてみます。 type User struct { Id int64 Name string Email string } type Blog struct { Id int64 Title string Body string } この 2 つの struct に対して共通の処理、例えば id で検索して結果を返す FindById というメソッドを提供したいとします。 Go は静的型付き言語なので、複数の型を引数に取ったり、複数の型を返すといったメソッドを定義することはできません。 よって、それぞれの型

    Go と reflect と generate - Qiita
    t2y-1979
    t2y-1979 2015/12/05
    分かりやすくて素晴らしい入門記事
  • GoCon 2015 Summer GoのASTをいじくって新しいツールを作る

    History & Practices for UniRx UniRxの歴史、或いは開発(中)タイトルの用例と落とし穴の回避法Yoshifumi Kawai

    GoCon 2015 Summer GoのASTをいじくって新しいツールを作る
  • Code Generation From the AST

    Deprehend is a tool that auto-generates go src to wrap goroutines with panic handlers and wrap http handlers for metrics tracking. Over at DeferPanic we do a lot of application monitoring specifically for you, Go engineers. Go as a language is very opinionated and more importantly, Go engineers are an anti-magic crowd. To this end, we have exposed most of our functionality as wrappers around the s

  • 1