gpt4 book ai didi

go - 比较两个 slice

转载 作者:IT老高 更新时间:2023-10-28 13:07:23 24 4
gpt4 key购买 nike

Go 中有没有办法比较两个 slice 并获取 slice X 中不在 slice Y 中的元素,反之亦然?

    X := []int{10, 12, 12, 12, 13}
Y := []int{12, 14, 15}

func compare(X, Y []int)

calling compare(X, Y)
result1 := []int{10, 12, 12, 13} // if you're looking for elements in slice X that are not in slice Y

calling compare(Y, X)
result2 := []int{14, 15} // if you're looking for elements in slice Y that are not in slice X

最佳答案

如果顺序不重要,并且集合很大,你应该使用集合实现,并使用它的 diff 函数来比较它们。

集合不是标准库的一部分,但您可以使用这个库,例如,您可以使用它从 slice 中自动初始化集合。 https://github.com/deckarep/golang-set

类似这样的:

import (
set "github.com/deckarep/golang-set"
"fmt"
)

func main() {
//note that the set accepts []interface{}
X := []interface{}{10, 12, 12, 12, 13}
Y := []interface{}{12, 14, 15}

Sx := set.NewSetFromSlice(X)
Sy := set.NewSetFromSlice(Y)
result1 := Sx.Difference(Sy)
result2 := Sy.Difference(Sx)

fmt.Println(result1)
fmt.Println(result2)
}

关于go - 比较两个 slice ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23870102/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com