服务器是否需要是一个指针
在Golang实战开发的过程中,我们经常会遇到一些这样那样的问题,然后要卡好半天,等问题解决了才发现原来一些细节知识点还是没有掌握好。今天编程网就整理分享《服务器是否需要是一个指针》,聊聊,希望可以帮助到正在努力赚钱的你。
问题内容根据 http#server.listenandserve 文档
func (*server) listenandserve
将服务器作为指针
根据[https://golang.org/pkg/net/http/],似乎服务器应该创建为指针
server := &http.server{
addr: ":8080",
handler: nil,
tlsconfig: nil,
.....
}
但是,这工作得很好。我在这里缺少什么?
server := http.Server{
Addr: ":8080",
Handler: nil,
......
}
if err := server.ListenAndServe(); err!=nil{
log.Fatal("oh Dear!")
}
解决方案
请参阅“Go Syntax of calling a function with pointer receiver”,以及
规格:“Method Set”
对应指针类型*T
的方法集是所有接收者为*T
或T
的方法集(即还包含T
的方法集)。
因此 func (*Server) ListenAndServe
适用于 server
和 *Server
。
这两个示例都使用 http.Server
的地址。第一个示例显式采用 http.Server
的地址。
在第二个示例中,调用 server.ListenAndServe()
是 (&server).ListenAndServe()
的简写。
这里是 relevant text from the specification 的简写:
应用短句柄是因为变量 server
为 addressable,并且 &server
的 Method Set 包含 ListenAndServe()
。
以上就是《服务器是否需要是一个指针》的详细内容,更多关于的资料请关注编程网公众号!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341