如何在Golang中对两个字符串数组进行异或?

时间:2016-12-14 02:31:19

标签: go xor

假设我有两个字符串数组。

A = [“ab”,“cd”,“ef”,“gh”] B = [“ef”,“gh”]

我想做C = A ^ B

其中C = [“ab”,“cd”]

我知道Golang允许按字节顺序进行XOR,但我在文档中没有看到任何字符串数组。

我该怎么做呢?也许有人为此做过一个实用工具?

1 个答案:

答案 0 :(得分:1)

这似乎不会出现在Go中的标准库中,但是这里有一些代码可以解决这个问题:

package main

import (
    "fmt"
)

func main() {
    A := []string{"ab", "cd", "ef", "gh"}
    B := []string{"ef", "gh"}
    fmt.Println(xor(A,B))
}

func xor(list1, list2 []string) []string {
    set1 := make(map[string]bool)
    for _, s := range list1 {
        set1[s] = true
    }
    set2 := make(map[string]bool)
    for _, s := range list2 {
        set2[s] = true
    }

    var c []string
    for _, s := range list1 {
        if !set2[s] {
          c = append(c, s)
        }
    }
    for _, s := range list2 {
        if !set1[s] {
          c = append(c, s)
        }
    }
    return c
}

https://play.golang.org/p/SDPhNIQ66E