Saya cukup baru untuk pergi dan saya bermain dengan paket pemberitahuan ini .
Awalnya saya punya kode yang terlihat seperti ini:
func doit(w http.ResponseWriter, r *http.Request) {
notify.Post("my_event", "Hello World!")
fmt.Fprint(w, "+OK")
}
Saya ingin menambahkan baris baru ke Hello World!
tetapi tidak dalam fungsi di doit
atas, karena itu akan sangat sepele, tetapi handler
kemudian seperti ini di bawah ini:
func handler(w http.ResponseWriter, r *http.Request) {
myEventChan := make(chan interface{})
notify.Start("my_event", myEventChan)
data := <-myEventChan
fmt.Fprint(w, data + "\n")
}
Setelah go run
:
$ go run lp.go
# command-line-arguments
./lp.go:15: invalid operation: data + "\n" (mismatched types interface {} and string)
Setelah sedikit Googling saya menemukan pertanyaan ini di SO .
Kemudian saya memperbarui kode saya ke:
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)
}
Apakah ini yang seharusnya saya lakukan? Kesalahan kompiler saya hilang jadi saya kira itu cukup bagus? Apakah ini efisien? Haruskah Anda melakukannya secara berbeda?
sumber
Seperti yang diminta oleh @ ρяσѕρєя penjelasan dapat ditemukan di https://golang.org/pkg/fmt/#Sprint . Penjelasan terkait dapat ditemukan di https://stackoverflow.com/a/44027953/12817546 dan di https://stackoverflow.com/a/42302709/12817546 . Ini jawaban penuh @ Yuanbo.
sumber