#GOプログラミング実践入門
※自分なりにまとめてみました。間違ってたらじゃんじゃん指摘してください。
##サーバー作成
ハンドラとかマルチプレクサは'net/http'のライブラリの魔法です。
http.ListenAndServe("ネットワークアドレス",nil)
でサーバーを作成できる。
第2引数はリクエストを処理するハンドラを呼び出す。
ネットワークアドレスが'""'の場合デフォルトのポート80になる。
ハンドラがnilの場合デフォルトの'DefaultServeMux'になる。←これがマルチプレクサってやつらしい。
##ハンドラとハンドラ関数ってなに??
###結論から言うとハンドラ関数はハンドラのように振る舞う関数です!
じゃあそのハンドラって??
ServeHTTP(http.ResponseWriter, *http.Request)
の形のやつをハンドラっていいます。(ちょっと誤魔化しました。)
###ハンドラはURLによってする処理を決めるという認識だと思います。(railsでいうcontroller)
##ここまでをまとめてみます。
ListenAndServeの第2引数がハンドラ。
このハンドラのデフォルト値はDefaultServeMux
###ここで、ハンドラがマルチプレクサ??意味わからんてなった方もいると思います。安心してください。僕もです笑
構造、インスタンスの関係がこんな感じらしいです。
##'Handler > ServeMux > ServeHTTP > DefaultServeMux'
言葉で言いますと、
ServeMuxは構造体Handlerのインスタンス(構造体はrailsで言うmodelみたいな感じですかね)。
ServeHTTPはServeMuxのメソッド(railsでいう`ServeHTTP.ServeMux`で呼び出せる的な??)
DefaultServeMuxはServeMuxのインスタンス。
となります。
では#マルチプレクサについて見てみましょう。
##マルチプレクサの仕事
'リクエストを特定のハンドラに転送するURLのマッチング処理'