Goの言語のデザイン
Goのプログラミング言語のデザイン
https://commandcenter.blogspot.com/2012/06/less-is-exponentially-more.html
Rob Pikeが書いたGoの設計思想について
https://golang.design/history/
めっちゃまとまっていてすごいmrsekut.icon*2
https://qiita.com/amaike/items/8105ed6ff69a61896e64
https://zenn.dev/mattn/books/4c7de85ec42cb44cf285/viewer/2
Goのmapとsliceについて
sliceの間の要素を取り出す方法が冗長
code:go
numbers := []int{1, 2, 3, 4, 5}
numbers = append(numbers:2, numbers3:...) // 3を取り除く
log(numbers) // 1, 2, 4, 5
参考
なぜGo言語は設計が悪いのか – Go愛好者の見地から | POSTD 理由1
Goのinterface
nilのinterfaceは必ずしもnilではない
参考
なぜGo言語は設計が悪いのか – Go愛好者の見地から | POSTD 理由2
なぜGo言語は設計が悪いのか – Go愛好者の見地から | POSTD 理由4
よくわからん
importや変数定義じにはコンマは不要なのに、Objectのフィールド定義時にはコンマが必要
参考
なぜGo言語は設計が悪いのか – Go愛好者の見地から | POSTD 理由6
そこまで変だとも思わないが、統一したほうがキレイだね
go:generateを使ってコード生成の方法がキモい
go:generateを初めて聞いたmrsekut.icon
いつか試したい
参考
なぜGo言語は設計が悪いのか – Go愛好者の見地から | POSTD 理由7
Error Handlingについて
Goのエラーハンドリング
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というパッケージがある
panic-defer-recoverを用いたError Handlingもある
#あとで調べる
参考
Go言語におけるエラーハンドリングを今一度振り返る - Eureka Engineering - Medium
詳しく、丁寧で良い記事。mrsekut.iconの理解が浅く読み飛ばした所も多い
https://qiita.com/Maki-Daisuke/items/80cbc26ca43cca3de4e4
https://tmrtmhr.info/tech/why-does-golang-not-have-exceptions/
https://i101330.hatenablog.com/entry/2018/08/26/004005
https://blog.golang.org/error-handling-and-go
プログラミング言語Go 7章
generics
https://blog.golang.org/why-generics
多値
http://bleis-tift.hatenablog.com/entry/multiple-values
https://qiita.com/najeira/items/0bb0acdd7a71fc3f559b
https://text.baldanders.info/golang/nil-is-nil/
nil
https://m0t0k1ch1st0ry.com/blog/2014/06/11/golang/
https://qiita.com/umisama/items/e215d49138e949d7f805
GoのType Sets
https://zenn.dev/nobishii/articles/99a2b55e2d3e50
3項演算子
https://zenn.dev/nobonobo/articles/09d884f1f520d6
Goの命名規則
設計
https://speakerdeck.com/onsd/go-design-theory-learned-from-kubernetes
http://wolfbash.hateblo.jp/entry/2017/10/02/163017
http://bleis-tift.hatenablog.com/entry/go-the-bad-parts
https://speakerdeck.com/budougumi0617/traps-and-explanations-in-go
https://postd.cc/why-go-is-not-good/
https://naruse.hateblo.jp/entry/2017/06/02/203441
https://mattn.kaoriya.net/software/lang/go/20170603001109.htm
https://okuranagaimo.blogspot.com/2020/03/go-zen-of-go.html
/miyamonz/golangの歴史
https://zenn.dev/nobonobo/articles/19c84c231aff46
https://github.com/SuperPaintman/the-evolution-of-a-go-programmer
https://www.kbaba1001.com/entry/2021/09/17/073149
https://zenn.dev/nobonobo/articles/74808a8d5e6f1e
https://zenn.dev/moutend/articles/2edaa5d11f5ef12b5cfa
https://zenn.dev/nobonobo/articles/74808a8d5e6f1e
https://qiita.com/hirokidaichi/items/adccebb41f77eaa6132f