より良いエンジニアを目指して

1日1つ。良くなる!上手くなる!

読書感想「Go言語によるWebアプリケーション開発」

Go言語によるWebアプリケーション開発

チャットアプリケーションに始まり、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)
                }
            }
        }
    }
}

f:id:rimever:20210626155133p:plain
Chat Application