func (s *Set) HasAny(items ...string) bool {
	has := false
	for _, item := range items {
		if _, has = s.m[item]; has {
			break
		}
	}
	return has
}
HasAny looks for the existence of any of the items passed.
It returns false if nothing is passed.
For multiple items it returns true if any of the items exist.
package strset
import (
	"fmt"
	"strings"
)
var (
	keyExists   = struct{}{}
	nonExistent string
)
const maxInt = int(^uint(0) >> 1)
type Set struct {
	m map[string]struct{}
}
func New(ts ...string) *Set {
	s := NewWithSize(len(ts))
	s.Add(ts...)
	return s
}
func NewWithSize(size int) *Set {
	return &Set{make(map[string]struct{}, size)}
}
func (s *Set) Add(items ...string) {
	for _, item := range items {
		s.m[item] = keyExists
	}
}
func (s *Set) Remove(items ...string) {
	for _, item := range items {
		delete(s.m, item)
	}
}
func (s *Set) Pop() string {
	for item := range s.m {
		delete(s.m, item)
		return item
	}
	return nonExistent
}
func (s *Set) Pop2() (string, bool) {
	for item := range s.m {
		delete(s.m, item)
		return item, true
	}
	return nonExistent, false
}
func (s *Set) Has(items ...string) bool {
	has := false
	for _, item := range items {
		if _, has = s.m[item]; !has {
			break
		}
	}
	return has
}