首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我应该直接在戈朗使用ServeMux还是http?

我应该直接在戈朗使用ServeMux还是http?
EN

Stack Overflow用户
提问于 2016-03-27 15:12:59
回答 1查看 3.7K关注 0票数 17

我想知道是否应该创建一个新的ServeMux并将其注册到http.Server,还是应该直接调用http.HandleFunchttp.Handler

我认为使用ServeMux的路由更好,因为http.HandleFunc显然会破坏HTTP的全局状态,这在Go中被认为是错误的做法。然而,在许多教程中,甚至在官方教程中,我经常看到使用的http.HandleFunc路由。

这让我感到奇怪:当有一个http.HandleFunc时,为什么要使用ServeMux?我知道ServeMux有一些优点(例如,您可以在不重复前缀的情况下嵌套它),但是我想知道为什么我会选择http.HandleFunc而不是复用器,特别是因为HandleFunc在内部使用ServeMux

编辑:正如在评论中承诺的那样,我已经要求在戈朗德夫上取消额外的(和无用的IMO功能),他们说不(嗯,对person说不)。这是链接。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-27 15:24:23

您在正确的轨道上:您应该更喜欢实例化您自己的ServeMux,因为您已经描述了原因。

使用DefaultServeMux也会导致在使用net/http/pprof时暴露分析端点的风险,因为这些端点是附加到DefaultServeMux的。

http.Handle|HandleFunc是方便的方法,在示例代码中保持样板可能很有用,但是创建ServeMux使您能够包装它,将它嵌套在另一个模板中,从构造函数导出它,等等。

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

https://stackoverflow.com/questions/36248946

复制
相关文章

相似问题

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