This is an explanation of the video content.
 用技术延续对ACG的热爱
37
 | 
Go实现两个切片相减

Go实现两个切片相减,比如 a是[“a”,“b”,“c”,“d”] b是[“c”,“d”] a-b 等于 [“a”,“b”] 如果a的长度大于b,则a-b,否则b-a

func sliceDifference(a, b []string) []string {
	if len(a) > len(b) {
		return subtract(a, b)
	} else {
		return subtract(b, a)
	}
}

// 从切片 a 中减去切片 b 的元素
func subtract(a, b []string) []string {
	// 创建一个空切片用于存储结果
	var diff []string

	// 创建一个 map,用于快速查找切片 b 的元素
	bMap := make(map[string]bool)
	for _, value := range b {
		bMap[value] = true
	}

	// 遍历切片 a 的元素,如果元素不在切片 b 中,则将其添加到结果切片中
	for _, value := range a {
		if !bMap[value] {
			diff = append(diff, value)
		}
	}

	return diff
}

首先调用 sliceDifference(a, b) 函数来确定应该使用哪个操作。如果切片 a 的长度大于切片 b,则调用 subtract(a, b) 函数执行 a - b 的操作;否则,调用 subtract(b, a) 函数执行 b - a 的操作。

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

diff := sliceDifference(a, b)
fmt.Println(diff) // 输出: [a b]


37 服务端 ↦ Go开发技巧 __ 134 字
 Go开发技巧 #13