言えば非同期に特化した言語ですが、慣れない内は簡単な非同期しか使えません。パッケージを知る事でもっとカジュアルに、かつ確実な非同期処理を行う事が出来る様になります。パッケージについて説明してみたいと思います。皆さんが一番使う排他制御だと思います。時には順番が入り乱れる事もあるでしょう。追加して以下の様にします。期待通りの順番に表示されます。なるまで待機する機能が簡単に実装出来ます。終了を待つ場合に使用します。パッケージは、名前の通りアトミックな演算を提供します。{v++v++v++v++v++v++v++v++v++v++wg.Done()}()}wg.Wait()fmt.Println(v)}このコードを実行すると、10回の加算を10並行で行うため合計で100になる事が期待出来ますが実際には何回かに1回100でない事象が発生します。演算がアトミックでないからです。1)wg.Done()}()}wg.Wait()fmt.Println(v)}このコードは何回実行しても合計が100になります。sync.Onceある関数ではある処理を1回のみ行いたい、そういった場合に使用します。greeting(wg)}wg.Wait()}このコードの実行結果は以下の様になります。こんにちわごきげんいかがですかごきげんいかがですかごきげんいかがですかごきげんいかがですかごきげんいかがですかさようなら並行で走った場合でも1度しか実行されません。先行で10個用意しておき、ある号令に従い1つずつ並行処理を開始したいとします。1回ずつ呼び出します。time.Second)}このコードを実行すると以下の様な出力になります。time.Second)}このコードを実行すると以下の様な出力になります。6カウントダウン後、「go」の部分が一気に出力されます。逐次行う作業と非同期に割込みで入ってくる作業を上手く処理したいとします。time.Millisecond)}wg.Done()}()wg.Wait()}このコードでは、10個の「定時作業」(Getを行う途中に「割込作業」(Put)が割り込みます。割り込む側、作業を処理する側が並行で動いていても上手く処理出来ています。パッケージにはにとても便利な機能が揃っています。カジュアルに非同期機能を使ってみて下さい。面白い物が出来上がると思います。reserved.ご質問、お問い合わせはe-mailで。