Go 戈朗etcd观察家恐慌
全部 我有以下代码:Go 戈朗etcd观察家恐慌,go,panic,etcd,Go,Panic,Etcd,全部 我有以下代码: package main import ( "log" "github.com/coreos/go-etcd/etcd" ) func main() { client := etcd.NewClient( []string{ "http://172.20.20.10:2379", "http:/
package main
import (
"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)
}
}
有人能告诉我发生了什么,以及如何让这个简单的例子正常工作吗??
非常感谢你的建议!
Alex库可以关闭
watchChan
频道。这将在r
中返回一个nil值,然后在尝试登录r.Node
时出现死机。
当你得到一个指针时,你应该检查它不是nil
。我还建议检查接收器通道是否已关闭,并采取相应措施
r, open := <-watchChan
if !open {
// channel is closed
}
if r == nil {
// the watch channel return a nil value
}
r,打开:=库可以关闭watchChan
频道。这将在r
中返回一个nil值,然后在尝试登录r.Node
时出现死机。
当你得到一个指针时,你应该检查它不是nil
。我还建议检查接收器通道是否已关闭,并采取相应措施
r, open := <-watchChan
if !open {
// channel is closed
}
if r == nil {
// the watch channel return a nil value
}
r,打开:=