Go

Golang に関するあれこれ

パッケージ管理 / Vendoring

Web Application Framework (WAF)

このあたりかと。 gin は使ってます。 Use() とミドルウェアまわりがもうすこし拡張されるとより使いやすくなる印象。

Data Access 系 (DAO, O/R Mapper, ActiveRecord とか)

gorm は使ってます。

Validator

どっちがいいだろうか

REPL

IDE

IntelliJ IDEA

$GOPATH の下で開発するかぎりにおいて、すべてのシンボルがちゃんと解決されてジャンプできる最高の環境になります。

Atom.io

go-plus 関係のパッケージをインストールすることで、セマンティックスがちゃんと理解されていいんですが、ジャンプ系とか vendor 配下 / $GOPATH 配下のコードまで追っていくとかが弱くて IntelliJ IDEA に乗り換えました。

Testing

以下の Go の Test に対する考え方からするとテスティングフレームワークを使わないのが筋かもしれませんが testify は使ってます。

Performance Tuning

http://qiita.com/naoina/items/d71ddfab31f4b29f6693

Struct Tag / Annotation

よく struct の右側にアノテーション的なのがついててどうやって定義 / 取得するのかなと思っていたが、reflect パッケージでできるようだ

https://golang.org/pkg/reflect/#StructTag

Error Handling

アンチパターン

アンチ No.1: 無名 struct

適切に初期化する手段が言語として提供されていないので使わない方がよい。

アンチ No.2: 便利君的 interface {}

interface {} は void * じゃない。

まだわかってないところ

  • immutable / mutable どう考えるんでしょ
  • GC 最適化
  • Copy on Write なところ、そうでないところ
  • interface {} が HogeType のこともあれば *HogeType なこともあるがどのように考えればよいのか

Share this post:
Child pages:

Comments