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,打开:=