Tôi khá mới để đi và tôi đã chơi với gói thông báo này .
Lúc đầu tôi có mã trông như thế này:
func doit(w http.ResponseWriter, r *http.Request) {
notify.Post("my_event", "Hello World!")
fmt.Fprint(w, "+OK")
}
Tôi muốn nối thêm dòng mới vào Hello World!
nhưng không phải trong chức năng doit
trên, vì điều đó sẽ khá tầm thường, nhưng handler
sau đó như sau:
func handler(w http.ResponseWriter, r *http.Request) {
myEventChan := make(chan interface{})
notify.Start("my_event", myEventChan)
data := <-myEventChan
fmt.Fprint(w, data + "\n")
}
Sau go run
:
$ go run lp.go
# command-line-arguments
./lp.go:15: invalid operation: data + "\n" (mismatched types interface {} and string)
Sau một chút Googling tôi đã tìm thấy câu hỏi này trên SO .
Sau đó, tôi cập nhật mã của mình thành:
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)
}
Đây có phải là những gì tôi phải làm? Lỗi trình biên dịch của tôi không còn nữa nên tôi đoán nó khá tốt? Đây có phải là hiệu quả? Bạn nên làm điều đó khác nhau?