learning go by building a set implementation