ここ最近Laravel
かPython
しか書いてないので、技術のアップデートをしよう思ったのがきっかけ。
なぜGo
なのかと言われると、以下の理由で決めて見た。
Laravel(PHP)
が動的型付け言語なので、静的型付け言語を学び直したい- 流行っている風のものをやりたいため(流行る理由があると思うので)
Laravel(PHP)
はWeb
サービス用、Python
は分析用、Go
はちょっとしたツール用という立ち位置にしやすいので、継続しやすいと思っているため- 毎日お世話になっているpecoみたいなのを作って見たい
学び方の順序などは、こちらの記事を参考にさせてもらった。 qiita.com
Goの背景や網羅的な使い方などを学ぶ
こちらの記事が全体感を掴むにはちょうどいいと思う。 gihyo.jp
細かいところや、理解が深まらない箇所が必ずでてくるのでその場合はこちらから細かいやり方を学ぶ。 go-tour-jp.appspot.com
大体の理解なら技評の記事 <-> A Tour Go
を行き来すればできるけど、部分的にググったりして学んでいく。
忘れている箇所やつまった点をまとめる。
静的型付けと動的型付けの違い
Wikipedia
がわかりやすい。
動的型付け - Wikipedia
とても極端に分かれているが、PHP8
ではJITコンパイラの採用が可決されたみたいで、IDE
との組み合わせで静的型付けみたいなこともできるんじゃないかなと考えてる。
この記事が面白い。どっちもいいとこ取りはし始めてる。
関数とメソッドの違い
自分の頭の中で関数 = メソッド
と勝手に認識してるせいで、途中こいつらは何を言っているんだ・・と思ってしまった。
関数
func sum(i, j int) int { return i + j } func main() { fmt.Println(sum(1,2)) // 3 }
関数の方はPHP
とほぼ同じなのでわかりやすい。
メソッドの方は構造体(ここだとData)と言われる入れ物に、sum
という振る舞いが追加されてるかのように扱える。
Go
にはClass
がないため、ここらへんで色々工夫するのかな。
type Data struct { i int j int } func (d *Data) sum() int { return d.i + d.j } func main() { data := Data {1, 2} fmt.Println(data.sum()) // 3 }
エラー処理
Go
では、error
インターフェースがあって、それを使ってエラーを通知するが、それとは別に例外処理が存在する。
どこまで深く勉強したいところだけど、以下の方の記事がすごく腑に落ちそう。
終わりに
インターフェースや、醍醐味の一つである並列処理などを書きたかったが、久々のブログで体力がないので次回。