30

私は golang を勉強してきましたが、多くの人がhttp.NewServeMux()関数を使用してサーバーを作成していることに気付きましたが、それが何をするのかよくわかりません。

私はこれを読みました:

では、ServeMux は HTTP リクエスト マルチプレクサです。各着信要求の URL を登録済みパターンのリストと照合し、URL に最もよく一致するパターンのハンドラーを呼び出します。

次のようなことをするのとどう違うのですか?

http.ListenAndServe(addr, nil)
http.Handle("/home", home)
http.Handle("/login", login)

多重化を使用する目的は何ですか?

4

2 に答える 2

15

net/httpGoDoc とソースから。

ListenAndServe starts an HTTP server with a given address and handler. The handler is usually nil, which means to use DefaultServeMux. Handle and HandleFunc add handlers to DefaultServeMux

DefaultServeMuxは単なる事前定義ですhttp.ServeMux

var DefaultServeMux = &defaultServeMux
var defaultServeMux ServeMux

ご覧のとおり、内部http.Handleで呼び出しが行われています。DefaultServeMux

func Handle(pattern string, handler Handler) { DefaultServeMux.Handle(pattern, handler) }

の目的は、異なるルートで異なるポートをリッスンする 2 つの関数が必要な場合のように、for インスタンスhttp.NewServeMux()の独自のインスタンスを持つことです。http.ServerMuxhttp.ListenAndServe

于 2016-11-08T06:11:58.517 に答える