這個問題在這里已經有了答案: 如何找出兩片字串之間的差異 (8 個回答) 11 小時前關閉。
我有兩個切片A := []string{"a","b","c","d"}和B := []string{"a","b"}。
如何["c","d"] 從切片 A 中獲取?
我嘗試了各種方法,但仍然沒有得到我想要的結果。謝謝
package main
import (
"fmt"
)
func main() {
A := []string{"a","b","c","d"}
B := []string{"a","b"}
temp := []string{}
for _, a := range A {
for _, b := range B {
if a == b {
fmt.Printf("%s == %s\n", a,b)
temp = append(temp, a)
break
}
}
}
}
uj5u.com熱心網友回復:
你幾乎明白了。注意是否a在B. 如果a未在 中找到B,則添加a到結果中。
func main() {
A := []string{"a", "b", "c", "d"}
B := []string{"a", "b"}
var result []string
for _, a := range A {
found := false
for _, b := range B {
if a == b {
found = true
break
}
}
if !found {
result = append(result, a)
}
}
fmt.Println(result)
}
uj5u.com熱心網友回復:
func main() {
A := []string{"a", "b", "c", "d"}
B := []string{"a", "b"}
var outterLoop, innerLoop []string
if len(A) > len(B) {
outterLoop = A
innerLoop = B
} else {
outterLoop = B
innerLoop = A
}
temp := []string{}
for _, b := range outterLoop {
found := false
for _, a := range innerLoop {
if a == b {
found = true
}
}
if !found {
temp = append(temp, b)
}
}
for _, t := range temp {
println(t)
}
}
uj5u.com熱心網友回復:
package main
import "fmt"
func find(a, b []string) []string {
bm := make(map[string]struct{}, len(b))
ok := false
for i := range b {
if _, ok = bm[b[i]]; !ok {
bm[b[i]] = struct{}{}
}
}
res := make([]string, 0)
for i := range a {
if _, ok = bm[a[i]]; !ok {
res = append(res, a[i])
}
}
return res
}
func main() {
a := []string{"a", "b", "c", "d"}
b := []string{"a", "b"}
t := find(a, b)
fmt.Println(t)
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/343533.html
標籤:走
上一篇:使用時間包決議Go中的時間偏移
