Я довольно новичок, и я играл с этим пакетом уведомлений .
Сначала у меня был код, который выглядел так:
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)
После небольшого поиска в Google я нашел этот вопрос на 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)
}
Это то, что я должен был сделать? Ошибки моего компилятора исчезли, так что я думаю, это довольно хорошо? Это эффективно? Стоит ли делать это по-другому?
источник
По просьбе @ ρяσѕρєя объяснение можно найти по адресу https://golang.org/pkg/fmt/#Sprint . Соответствующие объяснения можно найти по адресу https://stackoverflow.com/a/44027953/12817546 и по адресу https://stackoverflow.com/a/42302709/12817546 . Вот ответ @ Yuanbo полностью.
источник