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