在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
开源软件名称:deckarep/golang-set开源软件地址:https://github.com/deckarep/golang-set开源编程语言:Go 100.0%开源软件介绍:golang-setThe missing Update 3/26/2022
Coming from Python one of the things I miss is the superbly wonderful set collection. This is my attempt to mimic the primary features of the set collection from Python. You can of course argue that there is no need for a set in Go, otherwise the creators would have added one to the standard library. To those I say simply ignore this repository and carry-on and to the rest that find this useful please contribute in helping me make it better by contributing with suggestions or PRs. Features
Trusted byThis package is trusted by many companies and thousands of open-source packages. Here are just a few sample users of this package.
UsageThe code below demonstrates how a Set collection can better manage data and actually minimize boilerplate and needless loops in code. This package now fully supports generic syntax so you are now able to instantiate a collection for any comparable type object. What is considered comparable in Go?
Using this library is as simple as creating either a threadsafe or non-threadsafe set and providing a // Syntax example, doesn't compile.
mySet := mapset.NewSet[T]() // where T is some concrete comparable type.
// Therefore this code creates an int set
mySet := mapset.NewSet[int]()
// Or perhaps you want a string set
mySet := mapset.NewSet[string]()
type myStruct {
name string
age uint8
}
// Alternatively a set of structs
mySet := mapset.NewSet[myStruct]()
// Lastly a set that can hold anything using the any or empty interface keyword: interface{}. This is effectively removes type safety.
mySet := mapset.NewSet[any]() Comprehensive Examplepackage main
import (
"fmt"
mapset "github.com/deckarep/golang-set/v2"
)
func main() {
// Create a string-based set of required classes.
required := mapset.NewSet[string]()
required.Add("cooking")
required.Add("english")
required.Add("math")
required.Add("biology")
// Create a string-based set of science classes.
sciences := mapset.NewSet[string]()
sciences.Add("biology")
sciences.Add("chemistry")
// Create a string-based set of electives.
electives := mapset.NewSet[string]()
electives.Add("welding")
electives.Add("music")
electives.Add("automotive")
// Create a string-based set of bonus programming classes.
bonus := mapset.NewSet[string]()
bonus.Add("beginner go")
bonus.Add("python for dummies")
} Create a set of all unique classes. Sets will automatically deduplicate the same data. all := required
.Union(sciences)
.Union(electives)
.Union(bonus)
fmt.Println(all) Output: Set{cooking, english, math, chemistry, welding, biology, music, automotive, beginner go, python for dummies} Is cooking considered a science class? result := sciences.Contains("cooking")
fmt.Println(result) Output:
Show me all classes that are not science classes, since I don't enjoy science. notScience := all.Difference(sciences)
fmt.Println(notScience) Set{ music, automotive, beginner go, python for dummies, cooking, english, math, welding } Which science classes are also required classes? reqScience := sciences.Intersect(required) Output: Set{biology} How many bonus classes do you offer? fmt.Println(bonus.Cardinality()) Output: 2 Thanks for visiting! -deckarep |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论