去编译已声明但未使用

时间:2013-10-18 15:03:54

标签: go

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")
}

2 个答案:

答案 0 :(得分:4)

'未使用'可以理解为“无效”。在您将true分配给tag时, 这不会传播到外面,也不会影响函数的结果。

如果您在条件中使用tag或将其返回,则编译器不会再抱怨。

答案 1 :(得分:0)

您没有使用标签。你再次分配给它。使用意味着它位于某些东西的右侧:if tag { or if tag && odd1 && 1 == testVal {

这是Christopher Pfohl的回答