36 lines
		
	
	
		
			774 B
		
	
	
	
		
			Go
		
	
	
			
		
		
	
	
			36 lines
		
	
	
		
			774 B
		
	
	
	
		
			Go
		
	
	
package common
 | 
						|
 | 
						|
// StringSet is a useful type for looking up strings.
 | 
						|
type StringSet map[string]struct{}
 | 
						|
 | 
						|
// NewStringSet creates a new StringSet with the given strings.
 | 
						|
func NewStringSet(keys ...string) StringSet {
 | 
						|
	ss := make(StringSet, len(keys))
 | 
						|
	ss.Add(keys...)
 | 
						|
	return ss
 | 
						|
}
 | 
						|
 | 
						|
// Add inserts the given keys into this StringSet.
 | 
						|
func (ss StringSet) Add(keys ...string) {
 | 
						|
	for _, key := range keys {
 | 
						|
		ss[key] = struct{}{}
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
// Contains returns whether the given key is in this StringSet.
 | 
						|
func (ss StringSet) Contains(key string) bool {
 | 
						|
	_, ok := ss[key]
 | 
						|
	return ok
 | 
						|
}
 | 
						|
 | 
						|
// Keys returns a slice of all keys in this StringSet.
 | 
						|
func (ss StringSet) Keys() []string {
 | 
						|
	keys := make([]string, 0, len(ss))
 | 
						|
 | 
						|
	for key := range ss {
 | 
						|
		keys = append(keys, key)
 | 
						|
	}
 | 
						|
 | 
						|
	return keys
 | 
						|
}
 |