【问题标题】:How to get (and ignore) a value from Go channel如何从 Go 通道获取(并忽略)一个值
【发布时间】:2016-04-15 06:24:33
【问题描述】:

我在select 语句中有以下代码。 finish 的类型为 bool。实际上,只要我收到任何东西,我什至不在乎价值。但是,Go 给了我一个未使用的变量错误。我怎样才能绕过它?

case finish := <- termSig:

我目前的解决方法是Println(finish)

我试过了:-

case _ := <- termSig:

但这也不起作用。

【问题讨论】:

  • 我不知道投反对票。
  • 你不能声明_,虽然没有必要,但第二个应该用case _ = &lt;-termSig编译
  • @AsadIqbal 我投了反对票,因为“这个问题没有显示任何研究工作。”正如我在回答中指出的那样,官方教程在提到select 的第一页中准确地显示了这个用例,所以几乎不可能不自己遇到。

标签: go channel


【解决方案1】:

正如Go Tour 中所示,在引入select 时,您可能会遇到不初始化新变量的情况。

func fibonacci(c, quit chan int) {
    x, y := 0, 1
    for {
        select {
        case c <- x:
            x, y = y, x+y
        case <-quit:  // looks like exactly your use case
            fmt.Println("quit")
            return
        }
    }
}

【讨论】:

    【解决方案2】:

    只需省略变量和:=

    case <-termSig:
    

    【讨论】:

      猜你喜欢
      • 2013-01-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-08
      • 2016-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多