1 回答

TA貢獻1863條經驗 獲得超2個贊
package main
import (
"fmt"
"github.com/ahmetb/go-linq"
)
type T struct {
Name string
Tags []string
}
func main() {
params := []string{"food", "music", "gaming", "sport"}
t := []T{
T{Name: "event1", Tags: []string{"food", "music", "gaming", "sport"}},
T{Name: "event2", Tags: []string{"gaming"}},
T{Name: "event3", Tags: []string{"music", "sport"}},
T{Name: "event4", Tags: []string{"food", "music", "gaming", "sport"}},
T{Name: "event5", Tags: []string{"music", "coding", "sport"}},
T{Name: "event6", Tags: []string{"coding"}},
T{Name: "event7", Tags: []string{"food", "gaming", "sport"}},
}
var result []T
linq.From(t).SortT(func(t1 T, t2 T) bool {
var rs1 []string
linq.From(t1.Tags).IntersectByT(linq.From(params), func(str string) string {
return str
}).ToSlice(&rs1)
var rs2 []string
linq.From(t2.Tags).IntersectByT(linq.From(params), func(str string) string {
return str
}).ToSlice(&rs2)
return len(rs1) > len(rs2)
}).ToSlice(&result)
fmt.Printf("%+v", result)
}
[{Name:event1 標簽:[美食音樂游戲運動]} {Name:event4 標簽:[美食音樂游戲運動]} {Name:event7 標簽:[美食游戲運動]} {Name:event3 標簽:[音樂運動]} {名稱:event5 標簽:[音樂編碼運動]} {名稱:event2 標簽:[游戲]} {名稱:event6 標簽:[編碼]}]
上面的程序根據您的要求對數組進行排序,希望這會對您有所幫助。
- 1 回答
- 0 關注
- 97 瀏覽
添加回答
舉報