ฉันค่อนข้างใหม่ที่จะไปและฉันกำลังเล่นกับแพคเกจการแจ้งเตือนนี้
ตอนแรกฉันมีรหัสที่มีลักษณะเช่นนี้:
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)
หลังจากเล็กน้อยของ Googling ผมพบว่าคำถามนี้ในดังนั้น
จากนั้นฉันอัปเดตรหัสของฉันเป็น:
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)
}
นี่คือสิ่งที่ฉันควรจะทำอย่างไร ข้อผิดพลาดของคอมไพเลอร์ของฉันหายไปดังนั้นฉันคิดว่ามันค่อนข้างดี? มันมีประสิทธิภาพไหม? คุณควรทำมันแตกต่างกันอย่างไร