package economy import ( "maps" ) type Location uint type CostFunc func(cr float32, mutiplier float32, modifier float32) Money const ( Field Location = iota Display Storage ) type Head struct { Location Location Conditions struct { Multipliers map[string]float32 Modifiers map[string]float32 } CR float32 } func (h Head) Value(cost CostFunc) Money { var multiplier float32 = 1 for val := range maps.Values(h.Conditions.Multipliers) { multiplier *= val } var modifier float32 = 0 for val := range maps.Values(h.Conditions.Modifiers) { modifier += val } return cost(h.CR, multiplier, modifier) }