【Golang】RequestからQueryStringを取得するには

最近Golangでコマンドラインツールを作りたくて、Golangのサンプルコードとかを動かしていろいろ遊びながら覚えているところなのですが、たまたまEchoサーバーのプログラムがあったので試したのですがすごく簡単にかけますね!

そのとき、リクエストからQuery Stringをどう抜き出すんだろと思って試しに書いてみました。

package main

import (
    "net/http"
    "log"
    "fmt"
)

func main() {
    http.HandleFunc("/", handler)
    log.Fatal(http.ListenAndServe("localhost:8000", nil))
}

func handler(w http.ResponseWriter, r *http.Request) {
    fmt.Fprintf(w, "%s %s %s\n", r.Method, r.URL, r.Proto)
    v := r.URL.Query()
    if v == nil {
        return
    }
    for key, vs := range v {
        fmt.Fprintf(w, "%s = %s\n", key, vs[0])
    }
}

r.URL.Query()type Values map[string][]string を受け取ることができるので、rangeでループ回して表示しています。

個別にキーを指定して取得したい場合は以下のようにキーを指定してあげれば取得できるはず

r.URL.Query().Get(キー)