新しいServeMuxを作成してhttp.Server
に登録するか、またはhttp.HandleFunc
とhttp.Handler
を直接呼び出す必要がありますか?golangでServeMuxまたはhttpを直接使用する必要があります
http.HandleFunc
は明らかにGoの悪い習慣と見なされるHTTPパッケージのグローバル状態を混乱させるので、ServeMuxを使った方が良いと思います。しかし、多くのチュートリアルでは、公式のチュートリアルでも、私はしばしばhttp.HandleFunc
のルートが使われているのを見ます。
私は、ServeMux
があるときにhttp.HandleFunc
を使用するのはなぜですか?私はServeMuxにいくつかの利点があることを知っています(たとえば、常に接頭辞を繰り返さずに入れ子にすることができます)が、http.HandleFunc
をマルチプレクサで選択する必要があるのはなぜですか?HandleFunc
はServeMux
を内部で使用します。
編集:コメントに約束されているように、私はGolang-devに追加の(そして無用なIMO機能を)非難するように頼んだ。彼らはいいえと言った。 Here is the link.
など、便利な方法であり、ダウンサンプルコードでは決まり文句を保つために、おそらく便利な、しかしServeMuxを作成することはあなたにそれをラップすることができます、別の内の巣にそれを、コンストラクタからエクスポート私はこれが良い質問だと言いたかったのですが、これは以前から出てきたので、将来の他の人にとっては有用なものです) – elithrar
elithrar:それが私がここで尋ねた理由です。 Googleで何も見つかりませんでした。 Imo、 'http.HandleFunc'と' http.Handle'は非推奨です。 'Mux'と' Server'を使うと、さらに2行しか追加されず、あいまいさは常に悪くなります。特に明らかなやり方が「悪い」場合は特にそうです。 – Matt3o12
Go1の互換性の約束は削除を許可していないので、「2.0」(これは長い年月を要している)まで「差し迫っている」。 – elithrar