Soy bastante nuevo y estaba jugando con este paquete de notificación .
Al principio tenía un código que se veía así:
func doit(w http.ResponseWriter, r *http.Request) {
notify.Post("my_event", "Hello World!")
fmt.Fprint(w, "+OK")
}
Quería agregar nueva línea a, Hello World!
pero no en la función doit
anterior, porque eso sería bastante trivial, pero a handler
continuación, como esto a continuación:
func handler(w http.ResponseWriter, r *http.Request) {
myEventChan := make(chan interface{})
notify.Start("my_event", myEventChan)
data := <-myEventChan
fmt.Fprint(w, data + "\n")
}
Después go run
:
$ go run lp.go
# command-line-arguments
./lp.go:15: invalid operation: data + "\n" (mismatched types interface {} and string)
Después de buscar un poco en Google, encontré esta pregunta en SO .
Luego actualicé mi código a:
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)
}
¿Es esto lo que se suponía que debía hacer? Mis errores de compilación han desaparecido, así que supongo que eso es bastante bueno. ¿Es esto eficiente? ¿Deberías hacerlo de manera diferente?