チャットアプリケーションに始まり、Google Place APIを用いたレコメンドサービスなど、他では見られないようなアプリケーションを作るというのは興味深いんですが、如何せんAPIキーが必要だったり、MongoDBが必要になったりするので、飛ばし飛ばしコードを書いて試してました。
Go言語のswitch
以下メソッドのcase client.send <- message:
の部分。
これだけで大丈夫なのって思ったら、goではbreak入れなくても流れ落ちないんでしたね。
func (r *room) run() { for { select { case client := <-r.join: r.clients[client] = true case client := <-r.leave: delete(r.clients, client) close(client.send) case message := <-r.forward: for client := range r.clients { select { case client.send <- message: // send message (not fall through) default: delete(r.clients, client) close(client.send) } } } } }