登录
首页 >  Golang >  Go问答

服务器是否需要是一个指针

来源:stackoverflow

时间:2024-04-02 13:00:37 209浏览 收藏

在Golang实战开发的过程中,我们经常会遇到一些这样那样的问题,然后要卡好半天,等问题解决了才发现原来一些细节知识点还是没有掌握好。今天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的方法集是所有接收者为*TT的方法集(即还包含T的方法集)。

因此 func (*Server) ListenAndServe 适用于 server*Server

这两个示例都使用 http.Server 的地址。第一个示例显式采用 http.Server 的地址。

在第二个示例中,调用 server.ListenAndServe()(&server).ListenAndServe() 的简写。

这里是 relevant text from the specification 的简写:

应用短句柄是因为变量 serveraddressable,并且 &serverMethod Set 包含 ListenAndServe()

以上就是《服务器是否需要是一个指针》的详细内容,更多关于的资料请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>