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

问题在于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 中的表达式必须是函数调用


繁华开满天机
浏览 102回答 2
2回答

慕标琳琳

如果您决定创建一个匿名函数,那么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)}

慕工程0101907

您忘记调用(调用)匿名函数。因此,错误:go 中的表达式必须是函数调用。go func() { fmt.Prinln("Im an IIFE") }()  // note the parenthesis这称为立即调用函数表达式 (IIFE)。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go