no se pueden convertir datos (interfaz de tipo {}) en una cadena de tipo: se necesita una aserción de tipo

Estoy bastante nuevo para ir y estaba jugando con estonotificar paquete.

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 añadir una nueva línea aHello World! pero no en la funcióndoit arriba, porque eso sería bastante trivial, pero en elhandler después como este 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ésgo run:

$ go run lp.go 
# command-line-arguments
./lp.go:15: invalid operation: data + "\n" (mismatched types interface {} and string)

Después de un poco de 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? Los errores de mi compilador ya no están, así que supongo que eso es bastante bueno. ¿Es esto eficiente? ¿Deberías hacerlo de manera diferente?

Respuestas a la pregunta(3)

Su respuesta a la pregunta