第30回横浜Go読書会に参加
2019/08/24 横浜go勉強会
- 作者: 松木雅幸,mattn,藤原俊一郎,中島大一,上田拓也,牧大輔,鈴木健太
- 出版社/メーカー: 技術評論社
- 発売日: 2019/08/01
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る
冒頭からp29「積極的に defer を使う」まで読んだ。
後半ちょっと集中力が切れてメモが取れていません。
右上のgopherくんがパラパラ漫画になってる
前書きなど
1.1開発環境の構築
- godoc標準で入っているのか?
- GOPATH以下の/bin/をPATHに通す
- go getでインストールモジュールと開発するモジュールの場所を帰るのに便利
- go getで外部パッケージをインストール
- goのrepl gore
- 今までの実行をmain部に入れて実行している?
- time nowなどのあたいは毎度変わる
- ghqでプロジェクトを一元管理
- pecoでリポジトリ間の移動
- go製ツールはbrewだけでなくgo getでも取得できる
- ただしGoの環境が必要。
- 問答無用でmasterブランチの最新コミットが取得される?
- github releaseからコードを取得するためのghgというツールもある。
- Goの実行環境整備が他の言語と衝突することは少ない?
ghqで裏のフォルダ管理などを上手いことやってくれるのんで初心者向けではある。
- go getではインストールするディレクトリを
1.2エディタと開発環境
- go getではインストールするディレクトリを
-
https://github.com/fatih/vim-go
- 横浜Goの参加者はこれの利用者が多いようだ
- Emacs
- GoLand
- Visual Studio Code
- バージョンが上がって壊れた時などに一時的にgolandを使うことがある。
- デフォルトで同行されていないが公式が作っているツール群
- golang.org/x/tools/cmd
- goではgofmtでコードスタイルが強制される
- 無駄な議論の排除
- goimports
- importの自動削除・挿入
- 結構importsしてくくれないことがある
- 自社製のパッケージなどインポートしてくれないことがあるらしい。
- Lint
- golit:Goらしくないソースに警告
- -min_confidenceオプションで検査の厳しさを調整できる
- govet:バグの原因になりそうなものを警告
- golit:Goらしくないソースに警告
- go doc
-src
オプションでソースが見れる- godoc
- 昔はスタンダードライブラリと自分が作ったパッケージが混ざって一覧表示されていたので使いにくかった
- 今は別れて一覧化されている
- gopls golspの名前盛り上がってる
1.3 Goをはじめる
教育リソース:Atour of go
-
https://tour.golang.org
-
パッケージ分割
- 他の言語と違ってgoでは クラス定義の階層と名前空間が対応してない
- サブパッケージのインポート
- 依存管理
- vendor
- vendorディレクトリ配下を優先して読み込む
- vendor
- Modules(Go1.13)
go mod
サブコマンド- 依存モジュールの抽出・自動更新のための機能?
- build
- makeを使うらしい(以外)
1.4Go らしいコードを書く
- Effective Go:https://golang.org/doc/effective_go.html
- panicは大域脱出できるか、本当に例外的な時しか使わないので基本使わない。
- Goのregexpパッケージは遅い
- 最悪時間を緩和するために平均時間を犠牲にしている?
- 正規表現遅いけど結構使う
- SyncMapがあるからそれを使おう。
継承より移譲を選ぶ
OS間の違い
次回は「積極的にUTF-8を扱う」から