B-Teck!

お仕事からゲームまで幅広く

【Go】Goに入門してる話

背景

何回か書いてるけど、1月から3ヶ月間業務上の都合でGoを書いている。
付け焼き刃でもいいからサラッと知識を入れる必要があり、色々調べたり聞いて回ったりした。
その記録をまとめておく

参照したもの

A Tour of Go

A Tour of Go
定番のやつ。
公式の用意したウォークスルーという感じだけどふわっとやってBasicsの途中で投げた気もする。
どこかで一度通して全部やりたい。

Udemyの講座

【Go入門】Golang(Go言語)基礎〜応用 + 各種ライブラリ+ webアプリ開発コース(CRUD処理) | Udemy
Udemyの年末セールで安くなってたので買ってみた。
A Tour of Goに比べて動画講座だと勝手に進んでくれるので、受動的に知識を入れるには良かった。
講座自体の質は、昨年末に投稿されたっぽい講座なのにgo.modの話とかが導入になかったりもするので、なんとも言えないところ。
可能なら自力で独学したほうが早いし質が良いと思う。

Software Design 1月号の特集

Software Design (ソフトウェアデザイン) 2021年1月号 (発売日2020年12月18日) | 雑誌/電子書籍/定期購読の予約はFujisan
Goについての結構わかりやすくて範囲の広い特集記事。
読んだ時点では結構わからない部分も多く、それなりに読み切るのが大変だった。
そのうちもう一周読んでみようと思う。

サーバーサイドGoについての知人の解説

サーバーサイドGo入門 #1 ~net/httpでサーバーを立てる~ - Prelude
サーバーサイドGo入門 #2 ~database/sqlでDBを扱う~ - Prelude
サーバーサイドGo入門 #3 ~gin, gormを使う~ - Prelude
サーバーサイドGo入門 #4 ~test~ - Prelude

Goを書くって話をしたら知人のGoヤクザが色々解説する記事を書いてくれた。
仕事の上で特に役に立ったのは前半だったけど、後半も自分で書くときの参考になった。

プログラミング言語Go完全入門

プログラミング言語Go完全入門 - Google スライド
メルペイの人が公開している勉強会の資料。
わかりやすかったが分量が多いのでこれも途中で挫折したりしながら少しずつ読んでる。

その他言語機能がわからなくて参考にした記事

Goでよく見るnewとNewを調べたときのメモ - Qiita
Goにおけるポインタの使いどころ
【Go】net/httpパッケージを読んでhttp.HandleFuncが実行される仕組み - Qiita
Go言語のperiod(.) importとblank(_) importについて - Qiita
Go言語でのダックタイピング
Goを学ぶときにつまずきやすいポイントFAQ
golangにおける独自エラー定義方法とエラーごとの処理分岐 - Qiita
Go言語: いろいろなマップの作り方まとめ - Qiita
Go/golangでの日付処理まとめ(チートシート) - Qiita
go-playground/validator リクエストパラメータ向けValidationパターンまとめ - Qiita

感想

Goは言語機能の自由度が高くない分、設計や思想をどう表現するかでかっこよさが出てくる言語だなぁと思ってる。
あと文法が平易なので、いきなり入っても数日で最低限の読み書きは出来るようになるところがいい。
エラーハンドリングは最初は煩わしく感じたけど、Javaの検査例外/非検査例外を考えながら書く実装よりよっぽどわかりやすくて良いなとなったりした。
案件の都合上並列・並行処理に全然触れていなかったり、テストを全然書けていなかったりするので、そのあたりをどうにかしたいところ。
一応3月一杯でGo書く仕事は終わっちゃうんだけど、個人でちょこちょこやっていきたいなと思う。

困ったときに id:TakumiKaribeid:jrywm121 が色々教えてくれるのでめちゃくちゃ助かりました。
今後も教えて下さい。