如果条件匹配一次,如何跳过切片中的值。
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
谢谢!
如果您想根据已满足的条件跳过切片中的某些值,您可以使用标志变量来跟踪它。要实现所需的输出,您可以按如下方式修改代码:
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
”条件仅根据要求匹配一次。