Я досить новий, і я грав з цим пакетом сповіщень .
Спочатку у мене був код, який виглядав приблизно так:
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)
}
Це те, що я мав робити? Мої компіляторські помилки зникли, тому я гадаю, що це досить добре? Це ефективно? Чи варто робити це інакше?