It might make sense to cache the total value in the CoinSet since the only way it can be modified is via exported functions.  That way calling cs.TotalValue here (and elsewhere) wouldn't have to actually recalculate it over and over.