du1462 2013-10-15 05:59
浏览 202
已采纳

如何在Golang中找到两片字符串之间的差异?

Here is my desired outcome

slice1 := []string{"foo", "bar","hello"}
slice2 := []string{"foo", "bar"}

difference(slice1, slice2)
=> ["hello"]

I am looking for the difference between the two string slices!

  • 写回答

8条回答 默认 最新

  • duan6301 2013-10-15 06:48
    关注

    Depending on the size of the slices, different solutions might be best.

    My answer assumes order doesn't matter.

    Using simple loops, only to be used with smaller slices:

    package main
    
    import "fmt"
    
    func difference(slice1 []string, slice2 []string) []string {
        var diff []string
    
        // Loop two times, first to find slice1 strings not in slice2,
        // second loop to find slice2 strings not in slice1
        for i := 0; i < 2; i++ {
            for _, s1 := range slice1 {
                found := false
                for _, s2 := range slice2 {
                    if s1 == s2 {
                        found = true
                        break
                    }
                }
                // String not found. We add it to return slice
                if !found {
                    diff = append(diff, s1)
                }
            }
            // Swap the slices, only if it was the first loop
            if i == 0 {
                slice1, slice2 = slice2, slice1
            }
        }
    
        return diff
    }
    
    func main() {
        slice1 := []string{"foo", "bar", "hello"}
        slice2 := []string{"foo", "world", "bar", "foo"}
    
        fmt.Printf("%+v
    ", difference(slice1, slice2))
    }
    

    Output:

    [hello world]
    

    Playground: http://play.golang.org/p/KHTmJcR4rg

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(7条)

报告相同问题?

悬赏问题

  • ¥15 matlab实现基于主成分变换的图像融合。
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料
  • ¥15 使用R语言marginaleffects包进行边际效应图绘制
  • ¥20 usb设备兼容性问题
  • ¥15 错误(10048): “调用exui内部功能”库命令的参数“参数4”不能接受空数据。怎么解决啊