登录
首页 >  Golang >  Go问答

Go for 循环中收到“无法访问代码”错误的原因是什么?

来源:stackoverflow

时间:2024-02-11 21:03:12 402浏览 收藏

偷偷努力,悄无声息地变强,然后惊艳所有人!哈哈,小伙伴们又来学习啦~今天我将给大家介绍《Go for 循环中收到“无法访问代码”错误的原因是什么?》,这篇文章主要会讲到等等知识点,不知道大家对其都有多少了解,下面我们就一起来看一吧!当然,非常希望大家能多多评论,给出合理的建议,我们一起学习,一起进步!

问题内容

我有一个包含三个组件的 for 循环,它迭代一个 policies 结构,该结构包含一个 policy 类型列表,它也是一个结构。然而,在 for 循环中,“i++”被突出显示并且显然无法访问。我不知道为什么?因为当我运行应用程序时,它实际上执行了 c.sendresultdialog 函数,因此它是可以访问的,但我不知道为什么会出现此错误。

for i := 0; i < len(policies.Policies); i++ {
        if strings.ToLower(c.name) == strings.ToLower(policies.Policies[i].PolicyName) || strings.ToLower(c.name) == strings.ToLower(policies.Policies[i].PolicyId) {
            c.sendResultDialog(TestFoundPolicy, c.name, policies.Policies[i].PolicyId, policies.Policies[i].PolicyDescription)
            return true
        } else {
            c.sendResultDialog(PolicyNotFound, c.name)
            return false
        }
    }

正确答案


如果没有完整的示例,这很难说(不知道 sendresultdialog 在做什么)。但该错误可能是由于您从循环内返回而导致的,您可以尝试这样的操作:

policyFound := false

for i := 0; i < len(policies.Policies); i++ {
    if strings.ToLower(c.name) == strings.ToLower(policies.Policies[i].PolicyName) || strings.ToLower(c.name) == strings.ToLower(policies.Policies[i].PolicyId) {
        c.sendResultDialog(TestFoundPolicy, c.name, policies.Policies[i].PolicyId, policies.Policies[i].PolicyDescription)
        policyFound = true

        break // remove this if you want to call sendResultDialog for all entries and not just the first one
    }
}

if !policyFound {
    c.sendResultDialog(PolicyNotFound, c.name)
}

return policyFound

今天带大家了解了的相关知识,希望对你有所帮助;关于Golang的技术知识我们会一点点深入介绍,欢迎大家关注golang学习网公众号,一起学习编程~

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>