全部!我有下面的代碼:package mainimport ( "log" "github.com/coreos/go-etcd/etcd")func main() { client := etcd.NewClient( []string{ "http://172.20.20.10:2379", "http://172.20.20.11:2379", "http://172.20.20.12:2379", }, ) for { watchChan := make(chan *etcd.Response) go client.Watch("/config", 0, false, watchChan, nil) log.Println("Waiting for an update...") r := <-watchChan log.Printf(">>> got an updated config: %s: %s\n", r.Node.Key, r.Node.Value) }}但是...當(dāng)某個(gè)節(jié)點(diǎn)(例如 172.20.20.11)出現(xiàn)故障時(shí),恐慌會(huì)抱怨無(wú)效的內(nèi)存地址或零指針取消引用...> $ ./etcd-watcher2015/11/09 18:46:19 Waiting for an update...panic: runtime error: invalid memory address or nil pointer dereference[signal 0xb code=0x1 addr=0x10 pc=0x22fe]goroutine 1 [running]:main.main() /Users/Stalker/Workspace/src/snippets/etcd-watcher.go:26 +0x2begoroutine 17 [syscall, locked to thread]:runtime.goexit() /Users/Stalker/App/Go/1.5.1/src/runtime/asm_amd64.s:1696 +0x1goroutine 19 [runnable]:net/http.(*persistConn).writeLoop(0xc8200c6dc0) /Users/Stalker/App/Go/1.5.1/src/net/http/transport.go:1009 +0x40ccreated by net/http.(*Transport).dialConn /Users/Stalker/App/Go/1.5.1/src/net/http/transport.go:686 +0xc9d有人可以解釋一下發(fā)生了什么以及如何使這個(gè)簡(jiǎn)單的示例正常工作嗎?非常感謝您的建議!亞歷克斯
Golang etcd 觀察者恐慌
慕工程0101907
2021-11-22 15:17:28