mirror of
https://github.com/metabarcoding/obitools4.git
synced 2026-04-30 12:00:39 +00:00
8c7017a99d
- Update obioptions.Version from "Release 4.4.29" to "/v/ Release v5" - Update version.txt from 4.29 → .30 (automated by Makefile)
1.6 KiB
1.6 KiB
obiutils Package: Set Implementation in Go
The obiutils package provides a generic, type-safe set data structure for Go (v1.18+), along with comprehensive unit tests.
Core Features
- Generic Set Type: Implemented as
Set[T], using a map for O(1) membership checks. - Constructors:
MakeSet[T](...T)returns a new set populated with given elements.NewSet[T]()allocates an empty pointer to a set; useful for dynamic initialization.
- Methods:
Add(...T)inserts one or more elements (idempotent).Contains(T) boolchecks membership.Members() []Treturns a sorted slice of elements (deterministic iteration).String() stringprovides human-readable representation ([a b c]format).
- Set Operations:
Union(other Set[T]) Set[T]: returns a new set with elements in either operand.Intersection(other Set[T]) Set[T]: returns a new set with elements common to both.
Test Coverage
Unit tests validate:
- Set creation (empty, single/multiple values).
- Element addition and membership.
- String formatting for various sizes.
- Correctness of union/intersection across edge cases (empty sets, disjoint/common elements).
All tests use reflect.DeepEqual for precise structural comparison and sort outputs where order is non-deterministic.
Design Notes
- Immutable operations: methods return new sets rather than mutating in-place.
- No duplicate support (standard set semantics).
- Efficient storage via Go maps; no external dependencies.
Note
: This is a minimal, idiomatic set implementation—ideal for utility or testing contexts.