首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >运行go-libp2p-http示例时的Bugs

运行go-libp2p-http示例时的Bugs
EN

Stack Overflow用户
提问于 2022-01-24 12:44:29
回答 2查看 83关注 0票数 -2

问题在于go func。错误消息是go中的表达式必须是函数调用

代码语言:javascript
复制
 listener, _ := gostream.Listen(host1, p2phttp.DefaultP2PProtocol)
    defer listener.Close()
    go func() {
        http.HandleFunc("/hello", func(w http.ResponseWriter, r *http.Request) {
            w.Write([]byte("Hi!"))
        })
        server := &http.Server{}
        server.Serve(listener)
    }

错误是

command-line-arguments

.\sever.go:18:5: go中的表达式必须是函数调用

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-01-24 13:16:54

如果您决定创建一个匿名函数,那么

代码语言:javascript
复制
listener, _ := gostream.Listen(host1, p2phttp.DefaultP2PProtocol)
defer listener.Close()
go func() {
    http.HandleFunc("/hello", func(w http.ResponseWriter, r *http.Request) {
        w.Write([]byte("Hi!"))
    })
    server := &http.Server{}
    server.Serve(listener)
}()

命名函数:

代码语言:javascript
复制
listener, _ := gostream.Listen(host1, p2phttp.DefaultP2PProtocol)
defer listener.Close()
go Greet()

func Greet() {
    http.HandleFunc("/hello", func(w http.ResponseWriter, r *http.Request) {
        w.Write([]byte("Hi!"))
    })
    server := &http.Server{}
    server.Serve(listener)
}
票数 0
EN

Stack Overflow用户

发布于 2022-01-24 13:03:28

您忘记调用(调用)匿名函数。因此,go中的错误:表达式必须是函数调用。

代码语言:javascript
复制
go func() { fmt.Prinln("Im an IIFE") }()  // note the parenthesis

这被称为立即调用函数表达式(IIFE)。

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

https://stackoverflow.com/questions/70834064

复制
相关文章

相似问题

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