golang交集,差集

2021-10-24 10:10:17 字數 1424 閱讀 1672

從今天起寫一些golang 函式實現php庫函式的功能

php 函式 array_diff,array_intersect

package php

//arraydiff 模擬php array_diff函式

func arraydiff(array1 inte***ce{}, othersparams ...inte***ce{}) (inte***ce{}, error) {}, nil

} if len(array1) > 0 && len(othersparams) == 0

var tmp = make(map[inte***ce{}]int, len(array1))

for _, v := range array1

for _, param := range othersparams

} }var res = make(inte***ce{}, 0, len(tmp))

for k, v := range tmp

} return res, nil

}//arrayintersect 模擬php array_intersect函式

func arrayintersect(array1 inte***ce{}, othersparams ...inte***ce{}) (inte***ce{}, error) {}, nil

} if len(array1) > 0 && len(othersparams) == 0

var tmp = make(map[inte***ce{}]int, len(array1))

for _, v := range array1

for _, param := range othersparams

} }var res = make(inte***ce{}, 0, len(tmp))

for k, v := range tmp

} return res, nil

}

測試測試

var sl2 = inte***ce{}

var sl3 = inte***ce{}

res, err := php.arrayintersect(sl2, sl3)

if err == nil else

注意點

由於引數是inte***ce{}沒有對一些無法比較的型別進行校驗,使用函式時應該注意引數型別為可比較型別 

golang 下可比較型別

可比較型別

不可比較型別

boolean

slice

numeric

mapstring

func

pointer

channel

inte***ce

包含前文型別的array和struct

golang 陣列之間的交集,差集,並集,補集

今天公司需求兩個陣列之間的差集,類庫下不下來,就獨立出來了乙份,希望讀者有用 package model import sort sync type set struct 新建集合物件 func new items int set s.add items.returns 新增元素 func s se...

交集並集差集

1 內連線 select from student a inner join sc b on a.sno b.sno 左連線 select from student a left join sc b on a.sno b.sno 差集 select sno from student except s...

shell bash 交集 並集 差集

方法一 直接用檔名 取兩個文字檔案的並集 交集 差集 並 sort m sort file1 uniq sort file2 uniq uniq 交 sort m sort file1 uniq sort file2 uniq uniq d 差 file1 file2 sort m sort fil...