GoLang:检查Slice 1中的项目是否包含在Slice 2中。如果是,则删除Slice 2

时间:2017-02-18 15:58:52

标签: arrays for-loop go slice

我有一个字符串数组:slice1 [] [] string。 我使用for循环得到了我想要的值:

for _, i := range slice1 { //[string1 string2]
    fmt.Println("server: ", i[1]) //only want the second string in the array.
}

现在我有另一个字符串数组:slice2 [] [] string 我也使用for循环获取其值:

for _, value := range output { //
    fmt.Println(value) //Prints: [ 200K, 2, "a", 22, aa-d-2, sd , MatchingString, a ]
}

我想迭代slice1并检查string2是否匹配" MatchingString"在Slice2。如果是,请不要打印值数组。

我再次创建了一个for循环来执行此操作,但它不起作用:

for _, value := range slice2 {
    for _, i := range slice1 {
        if strings.Contains(value[0], i[1]) {
            //skip over
        } else {
            fmt.Println(value)
        }
    }
}

以下是示例代码:https://play.golang.org/p/KMVzB2jlbG 有关如何做到这一点的任何想法?谢谢!

1 个答案:

答案 0 :(得分:1)

如果我正确地阅读了您的问题,那么您正在尝试打印所有slice2的子句,这些子句具有以下属性:slice1中没有任何字符串是切片的第二个元素}。如果是这样,您可以通过

获得
Slice2Loop:
    for _, value := range slice2 {
        for _, slice2string := range value {
            for _, i := range slice1 {
                if slice2string == i[1] {
                    continue Slice2Loop
                }
            }
        }
        fmt.Println(value)
    }