この記事は Go Advent Calendar 2013 の 10 日目の投稿です。 はじめに 業務のツールや連携させる一部の機能として golang を使い出している方もチラホラ現れ始めました。 golang でウェブアプリケーションを書く人も多いですが、実はコマンドラインアプリケーションやバックグラウンドサーバを書くのに非常に役立ちます。 本記事では、golang を使うとどの様に簡単にバックグラウンドサーバや UI が書けるのかを紹介したいと思います。 非同期処理 例えば長い処理の終了を判定して画面を更新したいとします。長い処理を行っている間、キーボードイベントの判定や別の入出力処理、タイムアウト判定等を実行出来る様にする場合、C言語で書くと結構なコード量になり得ます。 しかし golang を使う事でこういった複雑な処理を簡単に実装出来てしまいます。 golang の特徴と言えば
![Golang でコマンドライン Fuzzy Finder 「gof」作った。 - Qiita](https://cdn-ak-scissors.b.st-hatena.com/image/square/008e67c65dff34a534f07e09bb121e92145efc76/height=288;version=1;width=512/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fcdn.qiita.com%252Fassets%252Fpublic%252Fadvent-calendar-ogp-background-f625e957b80c4bd8dd47b724be996090.jpg%3Fixlib%3Drb-4.0.0%26w%3D1200%26mark64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTkxNiZoPTMzNiZ0eHQ9R29sYW5nJTIwJUUzJTgxJUE3JUUzJTgyJUIzJUUzJTgzJTlFJUUzJTgzJUIzJUUzJTgzJTg5JUUzJTgzJUE5JUUzJTgyJUE0JUUzJTgzJUIzJTIwRnV6enklMjBGaW5kZXIlMjAlRTMlODAlOENnb2YlRTMlODAlOEQlRTQlQkQlOUMlRTMlODElQTMlRTMlODElOUYlRTMlODAlODImdHh0LWNvbG9yPSUyMzNBM0MzQyZ0eHQtZm9udD1IaXJhZ2lubyUyMFNhbnMlMjBXNiZ0eHQtc2l6ZT01NiZ0eHQtY2xpcD1lbGxpcHNpcyZ0eHQtYWxpZ249bGVmdCUyQ21pZGRsZSZzPWVlMTEzMDU4OWM5ZmY0Mzg1ODU1YmNjM2I4MWNjMjBi%26mark-x%3D142%26mark-y%3D151%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTYxNiZ0eHQ9JTQwbWF0dG4mdHh0LWNvbG9yPSUyMzNBM0MzQyZ0eHQtZm9udD1IaXJhZ2lubyUyMFNhbnMlMjBXNiZ0eHQtc2l6ZT0zNiZ0eHQtYWxpZ249bGVmdCUyQ3RvcCZzPTNmOWViYWVkM2YzOTEwYWQ3ZDBlMjRhZTJhOTFiMDBh%26blend-x%3D142%26blend-y%3D491%26blend-mode%3Dnormal%26s%3D5dd03ddbe05cf5b24e3645a0efc5653b)