Je suis assez nouveau et je jouais avec ce package de notification .
Au début, j'avais un code qui ressemblait à ceci:
func doit(w http.ResponseWriter, r *http.Request) {
notify.Post("my_event", "Hello World!")
fmt.Fprint(w, "+OK")
}
Je voulais ajouter une nouvelle ligne à Hello World!
mais pas dans la fonction doit
ci-dessus, car ce serait assez trivial, mais par la handler
suite comme ceci ci-dessous:
func handler(w http.ResponseWriter, r *http.Request) {
myEventChan := make(chan interface{})
notify.Start("my_event", myEventChan)
data := <-myEventChan
fmt.Fprint(w, data + "\n")
}
Après go run
:
$ go run lp.go
# command-line-arguments
./lp.go:15: invalid operation: data + "\n" (mismatched types interface {} and string)
Après un peu de recherche sur Google, j'ai trouvé cette question sur SO .
Ensuite, j'ai mis à jour mon code pour:
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)
}
Est-ce ce que j'étais censé faire? Mes erreurs de compilateur ont disparu, donc je suppose que c'est plutôt bien? Est-ce efficace? Devriez-vous le faire différemment?
la source
Comme demandé par @ ρяσѕρєя, une explication peut être trouvée à https://golang.org/pkg/fmt/#Sprint . Des explications connexes peuvent être trouvées sur https://stackoverflow.com/a/44027953/12817546 et sur https://stackoverflow.com/a/42302709/12817546 . Voici la réponse complète de @ Yuanbo.
la source