generated at
Goの言語のデザイン

Rob Pikeが書いたGoの設計思想について
めっちゃまとまっていてすごいmrsekutmrsekut


Goのmapとsliceについて
sliceの間の要素を取り出す方法が冗長
go
numbers := []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 を初めて聞いたmrsekut
いつか試したい
参考


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


generics


多値


nil






設計