【问题标题】:Go compiles declared and not used [duplicate]Go 编译声明但未使用 [重复]
【发布时间】:2023-03-19 00:42:01
【问题描述】:

我在使用 Go 时遇到了一些问题,我确实在 tag = true 中使用了标签

//  project main.go
package main

import (
    "fmt"
)

func main() {
    var m, odd1, odd2, in1, in2 int
    tag := false
    fmt.Scan(&m)
    for i := 0; i < m; i++ {
        fmt.Scan(&in1, &in2)
        odd1 += in1
        odd2 += in2
        if (in1+in2)&1 == 1 {
            tag = true
        }
    }
    if odd1&1 == 0 && odd2&1 == 0 {
        fmt.Print("0")
        return
    }
    if odd1&1 == 0 && odd2&1 == 1 || odd1&1 == 1 && odd2&1 == 0 {
        fmt.Print("1")
        return
    }
    fmt.Print("-1")
}

【问题讨论】:

  • 你没有使用标签。你再次分配给它。使用将意味着它位于某物的右侧:if tag {tag &amp;&amp; odd1 &amp;&amp; 1 == testVal {
  • @SethHoenig 不,在您发布的问题中,变量被声明了两次,从而掩盖了那个。在这种情况下,只是不使用该变量。

标签: go


【解决方案1】:

'Not used'可以理解为'没有效果'。当您将true 分配给tag 时, this 不会传播到外部,也不会对函数的结果产生任何影响。

如果您在条件中使用tag 或返回它,那么编译器就不会再抱怨了。

【讨论】:

    【解决方案2】:

    你没有使用标签。你再次分配给它。使用意味着它在某物的右侧:if tag { or if tag &amp;&amp; odd1 &amp;&amp; 1 == testVal {

    这是 Christopher Pfohl 的回答

    【讨论】:

      猜你喜欢
      • 2018-02-20
      • 1970-01-01
      • 1970-01-01
      • 2010-12-15
      • 2018-03-05
      • 2015-09-22
      • 2021-05-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多