Вопрос как указано в названии. Имея два списка известных типов, и вы просто хотели убедиться, что в обоих списках не используются одни и те же элементы, как вы можете это эффективно проверить в golang.
Все еще относительно плохо знакомы с golang. В Python я, вероятно, сделал бы что-то вроде этого:
a = [1, 2, 3]
b = [4, 5, 6]
c = [7, 8, 1]
def check_lists_are_unique(list_one, list_two):
return not bool(len(set(list_one) & set(list_two)))
print(check_lists_are_unique(a, b)) # returns True
print(check_lists_are_unique(a, c)) # returns False
print(check_lists_are_unique(b, c)) # returns True
Моя первая наивная первая попытка в golang будет:
a := []int{1, 2, 3}
b := []int{4, 5, 6}
c := []int{7, 8, 1}
checkUnique := func(listOne, listTwo []int) bool {
for _, i := range listOne {
for _, j := range listTwo {
if i == j {
return false
}
}
}
return true
}
fmt.Println(checkUnique(a, b)) // returns true
fmt.Println(checkUnique(a, c)) // returns false
fmt.Println(checkUnique(b, c)) // returns true
https://play.golang.org/p/vuBnv97MyWb
Интересно, действительно ли это самый эффективный способ сделать это сравнение в golang? Есть ли альтернативы или более «правильный» способ сделать это сравнение в golang?
Дополнительное примечание: Хотелось бы также услышать любые интересные / креативные / дурацкие способы сделать это, которые уникально golang - я sh.