You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于lint报错“if语句仅可与自身使用的赋值语句紧抱”的技术疑问

Go Lint错误疑问:if语句紧抱规则困惑

我遇到了一个lint错误,报错信息如下:

if statements should only be cuddled with assignments used in the if statement itself

Linter标记了代码中的if setToWait {行格式不规范。以下是相关代码:

func doThing() {
    for {
        hasAnyGlobalUnicast := false
        if setToWait {
            for _, nic := range *data.Result {

                // 检查接口是否有全局单播地址
                for _, addr := range *nic.IPAddresses {
                    if ip := net.ParseIP(addr.Address); ip != nil && ip.IsGlobalUnicast() {
                        hasAnyGlobalUnicast = true
                    }
                }
            }
        }

        if hasAnyGlobalUnicast {
            return data, err
        }
    }
}

变量hasAnyGlobalUnicast在if setToWait代码块内被赋值,且在该代码块结束后被检查。既然它的更新范围紧邻该if语句,为何Linter反而报错,而非要求将该变量与if语句紧抱?

内容的提问来源于stack exchange,提问作者Ninjaxor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 07:28:20