首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >http和default servemux之间的区别?

http和default servemux之间的区别?
EN

Stack Overflow用户
提问于 2016-04-29 01:07:20
回答 3查看 16.1K关注 0票数 42

这两者有什么不同:

代码语言:javascript
复制
func main() {

  http.HandleFunc("/page2", Page2)
  http.HandleFunc("/", Index)
  http.ListenAndServe(":3000", nil)
}

并使用golang服务多路复用器

代码语言:javascript
复制
func main() {
  mux := http.NewServeMux()

  mux.HandleFunc("/page2", Page2)
  mux.HandleFunc("/", Index)
  http.ListenAndServe(":3000", mux)
}
EN

回答 3

Stack Overflow用户

发布于 2016-04-29 01:27:42

代码语言:javascript
复制
func main() {
  http.DefaultServeMux.HandleFunc("/page2", Page2)
  http.DefaultServeMux.HandleFunc("/", Index)
  http.ListenAndServe(":3000", http.DefaultServeMux)
}

这两个程序之间有一个重要的区别:第一个程序不能完全控制程序中使用的处理程序。有一些包可以自动注册到init() functions (example)中的默认服务多路复用。如果程序直接或间接导入其中一个包,则由这些处理程序注册的处理程序将在第一个程序中处于活动状态。

第二个程序完全控制服务器使用的处理程序。使用默认服务多路复用器注册的任何处理程序都将被忽略。

票数 46
EN

Stack Overflow用户

发布于 2016-04-29 01:21:10

代码语言:javascript
复制
var DefaultServeMux = NewServeMux()

所以实际上没有什么大的区别,除非你想进一步定制并且需要一个显式的多路复用(例如,出于某种原因将它们链接起来)。

但是,由于默认值已经分配,因此没有必要无缘无故地创建另一个。

票数 4
EN

Stack Overflow用户

发布于 2016-04-29 01:16:21

ServerMux是一种实现Handler接口的类型,所有服务器都有一个。在您的第一个示例中,服务器仅使用默认处理程序。我不认为这里有什么不同,因为NewServeMux返回的多路复用器将与默认值相同。它是可用的,以便您可以进一步自定义请求处理。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36921190

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档