Go言語勉強会(お独り様) #1
Go in Actionを一人で読んで書いていきます。
Chapter1
Go言語の特徴
- 並列処理が得意(Goroutines)。マルチコアを有効利用できる。
- 高い再利用性。
- C/C++の実行速度とRubyやPythonの生産性を両立
- 速いBuild(頭の良いコンパイラとシンプルな依存関係解決アルゴリズム)
- Goroutine ≠ Thread
Goroutine
- 他の言語で並行処理をしたい場合に使用する。
- Goroutineは1つのThreadで幾つも実行される。
- Threadに比べて省メモリで実行でき、自動的に実行がスケジューリングされる。
Goroutineとして実行するには下記のように "go" で呼べばいい。
func log(){ } go log()
Channel
Goroutine間で安全にデータを受け渡すことが出来るデータ構造。
多くのプログラミング言語に存在する、マルチスレッドで1つのデータに アクセスすることで発生する問題を解決することができる。
(多くのプログラミング言語ではこの問題は、 セマフォ、mutexなどで非同期的に共通のデータを触らないようにしている。)
Composition
Go言語は、再利用しやすいように型にCompositionパターンが適用されている。
型というよりも動作を定義するようなインターフェース実装が可能。
感想
とりあえず、1時間ちょっとでChapter 1はお終い。
個人的には、継承のあたりの説明がいまいち分かりにくかった。 Figure 1.4 とかもう少し良い説明がないものか。
あとは英語としては比較的簡単に書いてくれていて、英語力が低い私でも結構平気で読めました。