set := make(map[T]struct{}). Добавление: set[x] = struct{}{}. Проверка: _, ok := set[x]. struct{} не занимает памяти под значение. Либо map[T]bool - понятнее, но bool занимает байт.
set := make(map[T]struct{})
set[x] = struct{}{}
_, ok := set[x]
map[T]bool