如果条件匹配一次,如何跳过切片中的值.

func main() {

    cloud := []string{"moon", "earth", "moon-light"}

    for _, value := range cloud {

        if strings.Contains(value, "mo") {
            fmt.Println("print1")
        } else if strings.Contains(value, "ear") {
            fmt.Println("print2")
        }
    }
}

输出: 打印1 打印2 打印1

预期输出: 打印1 打印2

谢谢!

推荐答案

您可以使用 map 来了解特定情况是否已经发生. 它比使用变量更好,因为它允许您跟踪大量条件,而不会造成任何混乱.这里有一个你想要的例子:

cloud := []string{"moon", "earth", "moon-light"}
var conditionTracker = make(map[string]bool)

for _, value := range cloud {

    if _, ok := conditionTracker["first_condition"]; !ok && strings.Contains(value, "mo") {
        conditionTracker["first_condition"] = true
        fmt.Println("print1")
    } else if _, ok := conditionTracker["second_condition"]; !ok && strings.Contains(value, "ear") {
        conditionTracker["second_condition"] = true
        fmt.Println("print2")
    }
}

Go相关问答推荐

[0]Func()as";请勿比较哨兵类型

如何描述OpenAPI规范中围棋的数据类型.JSON?

如何防止程序B存档/删除围棋中程序A当前打开的文件?

如何使用gopher-lua定义一个Lua函数,该函数有一个预定义的表作为param,Lua脚本可以在其中访问该函数中的表?

理解Golang中的IOTA和常量

将这两个函数合二为一的惯用方法

在VSCode中如何使用特定的文件名提供编译命令

Go struct 匿名字段是公开的还是私有的?

在 Cloud Run 中找不到默认凭据

为什么不同的 Wireguard 私钥会产生相同的公钥?

使用 ssh 从私有 gilab 仓库导入一个 go 项目:未知修订

当函数返回一个函数时,为什么 Go 泛型会失败?

Go:从 ssl 证书中获取 'subject/unstructeredName' 的值

如何使用 Docker 引擎 SDK 和 Golang 运行 docker 挂载卷

如何将一片 map 转换为一片具有不同属性的 struct

从动态输入中提取字符串,其中部分字符串可能不存在

Golang - 客户 Unmarshaler/Marshaler 在指针上具有 nil/null 值

在 Go 中发送 ack 和 term 后消息仍在 nats 限制队列中

无法访问 Go 模块导入的远程存储库

递归数据 struct 解组在 Go Lang Protobuf 中给出错误无法解析无效的线格式数据