Ich bin ziemlich neu und habe mit diesem Benachrichtigungspaket gespielt .
Zuerst hatte ich Code, der so aussah:
func doit(w http.ResponseWriter, r *http.Request) {
notify.Post("my_event", "Hello World!")
fmt.Fprint(w, "+OK")
}
Ich wollte Newline anhängen, Hello World!
aber nicht in der doit
obigen Funktion , weil das ziemlich trivial wäre, aber im handler
Folgenden wie folgt :
func handler(w http.ResponseWriter, r *http.Request) {
myEventChan := make(chan interface{})
notify.Start("my_event", myEventChan)
data := <-myEventChan
fmt.Fprint(w, data + "\n")
}
Nachher go run
:
$ go run lp.go
# command-line-arguments
./lp.go:15: invalid operation: data + "\n" (mismatched types interface {} and string)
Nach ein bisschen googeln fand ich diese Frage auf SO .
Dann habe ich meinen Code aktualisiert auf:
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)
}
Sollte ich das tun? Meine Compilerfehler sind verschwunden, also denke ich, dass das ziemlich gut ist? Ist das effizient? Solltest du es anders machen?
quelle
Auf Anfrage von @ ρяσsρєя finden Sie eine Erklärung unter https://golang.org/pkg/fmt/#Sprint . Zugehörige Erklärungen finden Sie unter https://stackoverflow.com/a/44027953/12817546 und unter https://stackoverflow.com/a/42302709/12817546 . Hier ist die vollständige Antwort von @ Yuanbo.
quelle