为了账号安全,请及时绑定邮箱和手机立即绑定

如何从不在切片 B 中的切片 A 中获取值?

如何从不在切片 B 中的切片 A 中获取值?

Go
Smart猫小萌 2022-10-10 18:02:02
我有两个切片A := []string{"a","b","c","d"}和B := []string{"a","b"}.如何["c","d"] 从切片 A 中获取?我尝试了各种方法,但仍然没有得到我想要的结果。谢谢package mainimport (    "fmt")func main() {    A := []string{"a","b","c","d"}    B := []string{"a","b"}    temp := []string{}        for _, a := range A {        for _, b := range B {            if a == b {                fmt.Printf("%s == %s\n", a,b)                temp = append(temp, a)                break            }               }            }    }
查看完整描述

3 回答

?
翻过高山走不出你

TA贡献1875条经验 获得超3个赞

你几乎明白了。请注意是否a在B. 如果a在 中找不到B,则添加a到结果中。


func main() {

    A := []string{"a", "b", "c", "d"}

    B := []string{"a", "b"}

    var result []string


    for _, a := range A {

        found := false

        for _, b := range B {

            if a == b {

                found = true

                break

            }

        }

        if !found {

            result = append(result, a)

        }

    }

    fmt.Println(result)

}


查看完整回答
反对 回复 2022-10-10
?
喵喔喔

TA贡献1735条经验 获得超5个赞

func main() {

    A := []string{"a", "b", "c", "d"}

    B := []string{"a", "b"}


    var outterLoop, innerLoop []string


    if len(A) > len(B) {

        outterLoop = A

        innerLoop = B

    } else {

        outterLoop = B

        innerLoop = A

    }

    temp := []string{}

    for _, b := range outterLoop {

        found := false

        for _, a := range innerLoop {

            if a == b {

                found = true

            }

        }

        if !found {

            temp = append(temp, b)

        }

    }


    for _, t := range temp {

        println(t)

    }

}


查看完整回答
反对 回复 2022-10-10
?
明月笑刀无情

TA贡献1828条经验 获得超4个赞

package main


import "fmt"


func find(a, b []string) []string {

    bm := make(map[string]struct{}, len(b))

    ok := false

    for i := range b {

        if _, ok = bm[b[i]]; !ok {

            bm[b[i]] = struct{}{}

        }

    }


    res := make([]string, 0)

    for i := range a {

        if _, ok = bm[a[i]]; !ok {

            res = append(res, a[i])

        }

    }


    return res

}


func main() {

    a := []string{"a", "b", "c", "d"}

    b := []string{"a", "b"}


    t := find(a, b)


    fmt.Println(t)

}


查看完整回答
反对 回复 2022-10-10
  • 3 回答
  • 0 关注
  • 131 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号