Go言語勉強会(お独り様) #1

Go in Actionを一人で読んで書いていきます。

Chapter1

Go言語の特徴

  • 並列処理が得意(Goroutines)。マルチコアを有効利用できる。
  • 高い再利用性。
  • C/C++の実行速度とRubyPythonの生産性を両立
  • 速い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 とかもう少し良い説明がないものか。

あとは英語としては比較的簡単に書いてくれていて、英語力が低い私でも結構平気で読めました。