Глядя на значения, вы можете кодировать проверки диапазона с некоторыми структурами данных:
type Rng struct {
From,To float64
V int
}
func (r Rng) In(val float64) bool { return val>=r.From && val<r.To }
type ARange struct {
T Rng
M []Rng
Def int // Default value for r if none of the M ranges match
}
var ranges=[]ARange{ {T:Rng{0,7.5}, M:[]Rng{ {0,0.125,1} }, Def: 2 },
...
Затем напишите for-l oop, который проходит через каждый элемент ranges
и проверяет t
и m
, чтобы увидеть, есть ли совпадения.