res []data.Block) []data.Block { if filter(node.Min, node.Max, min, max) { for _, b := range node.Blocks { if filter(b.Min, b.Max, min, max) { res = append(res, b) } } res = node.LeftPart.search(min, max, res) res = node.RightPart.search(min, max, res) } return res } Фильтруем блоки, потому что не все могут подходить под условия 15