Goは、シンプルで信頼性の高い効率的なソフトウェアを簡単に構築できるオープンソースのプログラミング言語です。
The Go Programming LanguageをGoogle翻訳して引用
Goは上記の様にお手軽に高速なコードを書けます。例えば、サーバプログラムです。複数のサーバを並行処理するコードも次のように30行ほどで済みます。
package main
import (
"fmt"
"log"
"net/http"
)
func main() {
serverChan := make(chan bool) // goroutine間の通信チャンネル. ここでは単に処理の段階を停止させるために使用
go func() { // go routineを宣言。"go 関数"で宣言された関数は他の"go 関数"で宣言された関数と非同期で動作する
fmt.Println("http://localhost:12345") // 画面にこのアドレスでサーバが動いていると通知
log.Fatal( // この中で起きたことについてログを吐き出して自身のプロセスをキルする
http.ListenAndServe( // サーバとその受け口を定義
"localhost:12345", // Listenする受け口
http.FileServer(http.Dir("/home/www/data/ubx")), // サーバオブジェクト。ここでは組み込み関数で用意されているファイルサーバ
),
)
}()
go func() {
fmt.Println("http://localhost:60789")
log.Fatal(http.ListenAndServe("localhost:60789", http.FileServer(http.Dir("/home/www/data/pos"))))
}()
<-serverChan // ここでserverChanにtrueが渡されると処理が先に進む。このコードでは渡す機会がないので常にここで停止
}
例ではファイルサーバでしたが、エコーやらCGIやら色々と用意されておりで至れり尽くせりです。