如果第一次符合条件,如何跳过切片中的值

问题描述 投票:0回答:1

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

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

谢谢!

string go slice
1个回答
0
投票

如果您想根据已满足的条件跳过切片中的某些值,您可以使用标志变量来跟踪它。要实现所需的输出,您可以按如下方式修改代码:

package main

import (
    "fmt"
    "strings"
)

func main() {
    cloud := []string{"moon", "earth", "moon-light"}
    conditionMet := false // Initialize a flag variable

    for _, value := range cloud {
        if conditionMet {
            // If the condition has already been met, skip further processing
            continue
        }

        if strings.Contains(value, "mo") {
            fmt.Println("print1")
            conditionMet = true // Set the flag to true once the condition is met
        } else if strings.Contains(value, "ear") {
            fmt.Println("print2")
        }
    }
}

在此代码中,我们引入了

conditionMet
变量,该变量以 false 开头。当满足“
mo
”条件时,我们打印“
print1
”并将
conditionMet
设置为true。循环的后续迭代将检查条件满足是否为真,如果是,则将跳过进一步的处理,从而得到预期的输出“
print1 print2
。”

此方法可确保“

mo
”条件仅根据要求匹配一次。

© www.soinside.com 2019 - 2024. All rights reserved.