问题在于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)
}错误是
command-line-arguments
.\sever.go:18:5: go中的表达式必须是函数调用
发布于 2022-01-24 13:16:54
如果您决定创建一个匿名函数,那么
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-01-24 13:03:28
您忘记调用(调用)匿名函数。因此,go中的错误:表达式必须是函数调用。
go func() { fmt.Prinln("Im an IIFE") }() // note the parenthesis这被称为立即调用函数表达式(IIFE)。
https://stackoverflow.com/questions/70834064
复制相似问题