GO language immutable structure-sharing collection classes