strset
strset copied to clipboard
Pointer receiver on Clear
The coexistence of (s Set) and (s *Set) can cause problems. For instance, if a consumer of the library were to create an interface to represent a subset of methods Clear can't go on the same interface as the other methods since Set and *Set are treated as two different types.
There are a few ways to handle this:
- The implementation of
Clearcould be replaced by a slower version that callsPopuntil theSetis empty. -
Clearcould be removed altogether, leaving the consumer to implement a for loop callingPopif necessary. - Alternatively, all other methods could be changed to use
*Set. This may seem heavy handed at first but since it's not necessary to explicitly take the pointer of aSetvariable to call*Setmethods this incurs no penalty on the consumer. If #1 is implemented it would be a nice symmetry to have the mutable type use a pointer and the immutable type avoid it.
I like option two. The set could be cleared simply with s = Make()