我的http func方法在函数体错误之外始终收到未声明的语句。我不确定为什么在修复了一些全局变量后仍然会出现这种情况。
package main
import (
"net/http"
"github.com/gorilla/websocket"
)
var audioMessage []byte
var whatType int
var recieverReady bool
http.HandleFunc("/send", func(w http.ResponseWriter, r *http.Request) {
conn, _ := websocket.Upgrade(r, w)
go func(){
for {
messageType, revdata, err := conn.ReadMessage()
if recieverReady {
audioMessage <- revdata
whatType <- messageType
}
}
}()
})
答案 0 :(得分:4)
http.HandleFunc()
是http中的一种方法。您不能只是将其放在函数之外。就像在函数外部编写strings.Compare(a,b)
。
它本身不是函数声明。
执行此操作的正确方法是将此方法包含在main
方法(或其他方法)中。为了清楚起见,您可以将匿名函数(那里有func(w http.ResponseWriter, r *http.Request)
移到命名函数。
示例:
func send (w http.ResponseWriter, r *http.Request) {
conn, _ := websocket.Upgrade(r, w)
go func(){
for {
messageType, revdata, err := conn.ReadMessage()
if recieverReady {
audioMessage <- revdata
whatType <- messageType
}
}
}()
}
func main () {
http.HandleFunc("/send", send)
}
不过请不要忽略该错误。
答案 1 :(得分:1)
将您的http.HandleFunc
放入func main() {}