GoFrame框架gset交差并補(bǔ)集使用實(shí)例
上一篇文章:GoFrame gset使用入門 | 對(duì)比PHP、Java、Redis 得到了大家不錯(cuò)的反饋,今天繼續(xù)為大哥分享gset的更多知識(shí)點(diǎn)。
使用場(chǎng)景方法介紹
交差并補(bǔ)集有非常多的應(yīng)用場(chǎng)景,合理的使用交差并補(bǔ)集能減少我們的DB查詢次數(shù)。
Intersect: 交集
交集,屬于set且屬于others的元素為元素的集合。
func (set *Set) Intersect(others ...*Set) (newSet *Set)
Diff: 差集
Diff: 差集,屬于set且不屬于others的元素為元素的集合。
func (set *Set) Diff(others ...*Set) (newSet *Set)
Union: 并集
Union: 并集,屬于set或?qū)儆趏thers的元素為元素的集合。
func (set *Set) Union(others ...*Set) (newSet *Set)
Complement: 補(bǔ)集
Complement: 補(bǔ)集,(前提: set應(yīng)當(dāng)為full的子集)屬于全集full不屬于集合set的元素組成的集合。如果給定的full集合不是set的全集時(shí),返回full與set的差集。
func (set *Set) Complement(full *Set) (newSet *Set)
注意:通過(guò)集合方法中的...我們可以發(fā)現(xiàn),交差并集方法支持多個(gè)集合參數(shù)進(jìn)行計(jì)算。
舉例
package main import ( "fmt" "github.com/gogf/gf/container/gset" ) func main() { s1 := gset.NewFrom([]interface{}{1, 2, 3}) s2 := gset.NewFrom([]interface{}{4, 5, 6}) s3 := gset.NewFrom([]interface{}{1, 2, 3, 4, 5, 6, 7}) fmt.Println("s1和s3的交集:", s1.Intersect(s3)) //s1和s3的交集:"[1,2,3]" fmt.Println("s1和s2的差集:", s1.Diff(s2)) //s1和s2的差集:"[2,3,1]" fmt.Println("s1和s2的并集:", s1.Union(s2)) //s1和s2的并集:"[3,1,4,5,6,2]" fmt.Println("s1和s3的補(bǔ)集:", s1.Complement(s3)) //s1和s3的補(bǔ)集:"[4,5,6,7]" }
打印結(jié)果
總結(jié)
通過(guò)這篇文章我們了解到gset數(shù)據(jù)結(jié)構(gòu)交差并補(bǔ)集的基本使用
交差并集方法是支持多個(gè)集合參數(shù)進(jìn)行計(jì)算的
合理使用交差并補(bǔ)集能較少DB查詢次數(shù),提高程序整體響應(yīng)速度。
更多關(guān)于GoFrame gset交差并補(bǔ)集的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
golang 實(shí)現(xiàn)Location跳轉(zhuǎn)方式
這篇文章主要介紹了golang 實(shí)現(xiàn)Location跳轉(zhuǎn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-05-05Go語(yǔ)言多人聊天室項(xiàng)目實(shí)戰(zhàn)
這篇文章主要為大家詳細(xì)介紹了Go語(yǔ)言多人聊天室項(xiàng)目實(shí)戰(zhàn),實(shí)現(xiàn)單撩或多撩等多種功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-08-08詳解Go開發(fā)Struct轉(zhuǎn)換成map兩種方式比較
本篇文章主要介紹了詳解Go開發(fā)Struct轉(zhuǎn)換成map兩種方式比較,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-07-07go通過(guò)benchmark對(duì)代碼進(jìn)行性能測(cè)試詳解
在開發(fā)中我們要想編寫高性能的代碼,或者優(yōu)化代碼的性能時(shí),你首先得知道當(dāng)前代碼的性能,在go中可以使用testing包的benchmark來(lái)做基準(zhǔn)測(cè)試 ,文中有詳細(xì)的代碼示例,感興趣的小伙伴可以參考一下2023-04-04Go結(jié)合JavaScript實(shí)現(xiàn)抓取網(wǎng)頁(yè)中的圖像鏈接
這篇文章主要為大家詳細(xì)介紹了Go語(yǔ)言如何結(jié)合JavaScript實(shí)現(xiàn)抓取網(wǎng)頁(yè)中的圖像鏈接,文中的示例代碼講解詳細(xì),有需要的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-11-11go本地環(huán)境配置及vscode go插件安裝的詳細(xì)教程
這篇文章主要介紹了go本地環(huán)境配置及vscode go插件安裝的詳細(xì)教程,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-05-05Go?實(shí)現(xiàn)?WebSockets之創(chuàng)建?WebSockets
這篇文章主要介紹了Go?實(shí)現(xiàn)?WebSockets之創(chuàng)建?WebSockets,文章主要探索?WebSockets,并簡(jiǎn)要介紹了它們的工作原理,并仔細(xì)研究了全雙工通信,想了解更多相關(guān)內(nèi)容的小伙伴可以參考一下2022-04-04Go語(yǔ)言報(bào)錯(cuò):'godoc'?不是內(nèi)部或外部命令,也不是可運(yùn)行的程序(godoc無(wú)法使用處理)解決
這篇文章主要介紹了Go語(yǔ)言報(bào)錯(cuò):'godoc'?不是內(nèi)部或外部命令,也不是可運(yùn)行的程序(godoc無(wú)法使用處理)解決方法,詳細(xì)描述了Go語(yǔ)言godoc命令無(wú)法使用的原因、解決方法與相關(guān)注意事項(xiàng),需要的朋友可以參考下2024-01-01