为了账号安全,请及时绑定邮箱和手机立即绑定

运行 go-libp2p-http 示例时的错误

运行 go-libp2p-http 示例时的错误

Go
繁华开满天机 2022-10-31 15:34:52
问题在于go func。错误消息是go 中的表达式必须是函数调用 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)    }错误是命令行参数.\sever.go:18:5: go 中的表达式必须是函数调用
查看完整描述

2 回答

?
慕标琳琳

TA贡献1830条经验 获得超9个赞

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


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)

}()

命名函数:


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)

}


查看完整回答
反对 回复 2022-10-31
?
慕工程0101907

TA贡献1887条经验 获得超5个赞

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

go func() { fmt.Prinln("Im an IIFE") }()  // note the parenthesis

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


查看完整回答
反对 回复 2022-10-31
  • 2 回答
  • 0 关注
  • 94 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信