Goの言語のデザイン
めっちゃまとまっていてすごいmrsekut.icon*2
sliceの間の要素を取り出す方法が冗長
code:go
numbers := []int{1, 2, 3, 4, 5}
numbers = append(numbers:2, numbers3:...) // 3を取り除く 参考
nilのinterfaceは必ずしもnilではない
参考
よくわからん
importや変数定義じにはコンマは不要なのに、Objectのフィールド定義時にはコンマが必要
参考
そこまで変だとも思わないが、統一したほうがキレイだね
go:generateを使ってコード生成の方法がキモい
go:generateを初めて聞いたmrsekut.icon
いつか試したい
参考
Goには例外は存在しない
多値の戻り値を用いてエラーの有無をを示す
code:go
f, err := os.Open("/tmp/hogehoge.txt")
if err != nil {
log.Fatal(err)
}
エラーを示す値にはerrorインターフェースを満たす
code:go
type error interface {
Error() string
}
エラーがある場合は、エラー内容を示す文字列を返す
エラーがない場合はnilを返す
他言語の例外機構のように、try-catch-finally句による制御や、例外クラスが提供する豊富なプロパティとメソッドによるエラーに関する情報の取得や通知は、そのままで行うことは難しくなっています。 ref スタックトレースを保持できないのでデバッグがしづらい
pkg/errorsというパッケージがある
参考
詳しく、丁寧で良い記事。mrsekut.iconの理解が浅く読み飛ばした所も多い
generics
多値
nil
設計