最佳答案
我是一个很新的去和我玩这个通知包。
一开始我的代码是这样的:
func doit(w http.ResponseWriter, r *http.Request) {
notify.Post("my_event", "Hello World!")
fmt.Fprint(w, "+OK")
}
我想在Hello World!
中添加换行符,但不是在上面的doit
函数中,因为那将是非常琐碎的,而是在后面的handler
中,如下所示:
func handler(w http.ResponseWriter, r *http.Request) {
myEventChan := make(chan interface{})
notify.Start("my_event", myEventChan)
data := <-myEventChan
fmt.Fprint(w, data + "\n")
}
go run
之后:
$ go run lp.go
# command-line-arguments
./lp.go:15: invalid operation: data + "\n" (mismatched types interface {} and string)
在谷歌了一下之后,我找到了这个关于SO的问题。
然后我更新了我的代码:
func handler(w http.ResponseWriter, r *http.Request) {
myEventChan := make(chan interface{})
notify.Start("my_event", myEventChan)
data := <-myEventChan
s:= data.(string) + "\n"
fmt.Fprint(w, s)
}
这是我该做的吗?我的编译器错误消失了,所以我猜这很好?这样有效率吗?你是否应该另辟蹊径?