Goの言語のデザイン
めっちゃまとまっていてすごい


sliceの間の要素を取り出す方法が冗長
gonumbers := []int{1, 2, 3, 4, 5}
numbers = append(numbers[:2], numbers[3:]...) // `3`を取り除く
log(numbers) // [1, 2, 4, 5]
参考
nilのinterfaceは必ずしもnilではない
参考
よくわからん
importや変数定義じにはコンマは不要なのに、Objectのフィールド定義時にはコンマが必要
参考
そこまで変だとも思わないが、統一したほうがキレイだね
go:generateを使ってコード生成の方法がキモい
go:generate
を初めて聞いた

いつか試したい
参考
Goには例外は存在しない
多値の戻り値を用いてエラーの有無をを示す
gof, err := os.Open("/tmp/hogehoge.txt")
if err != nil {
log.Fatal(err)
}
エラーを示す値には error
インターフェースを満たす
gotype error interface {
Error() string
}
エラーがある場合は、エラー内容を示す文字列を返す
エラーがない場合は nil
を返す
>他言語の例外機構のように、try-catch-finally句による制御や、例外クラスが提供する豊富なプロパティとメソッドによるエラーに関する情報の取得や通知は、そのままで行うことは難しくなっています。 ref
スタックトレースを保持できないのでデバッグがしづらい
pkg/errors
というパッケージがある
参考
詳しく、丁寧で良い記事。

の理解が浅く読み飛ばした所も多い
generics
多値
nil
設計