Dictionary 获取地图键golang之间的所有范围

Dictionary 获取地图键golang之间的所有范围,dictionary,go,key,Dictionary,Go,Key,所以我有以下结构,我想迭代FiniteSet,从范围中得到实际关键点之间的所有范围。我的意思是获得不包括键的范围float64的原因是我也想处理Math.inf()。但我不确定这是否是最好的方法 类型( 有限集结构{ 设置映射[float64]为空 } 无结构{} 范围结构{ 下二进制浮点数64 上限浮动64 } ) e、 g map[float64]什么都没有{ math.Inf(-1):无{}, 1:没什么{}, 2:没什么{}, 5:没什么{}, math.Inf():nothing{}

所以我有以下结构,我想迭代FiniteSet,从范围中得到实际关键点之间的所有范围。我的意思是获得不包括键的范围float64的原因是我也想处理
Math.inf()
。但我不确定这是否是最好的方法

类型(
有限集结构{
设置映射[float64]为空
}
无结构{}
范围结构{
下二进制浮点数64
上限浮动64
}
)
e、 g

map[float64]什么都没有{
math.Inf(-1):无{},
1:没什么{},
2:没什么{},
5:没什么{},
math.Inf():nothing{}
}
我希望产出是收益率

[]范围{
范围{math.inf(-1),0},
范围{3,4},
范围{6,math.Inf()}
}
}
如果不是一团糟的话,我会把我的实施尝试包括在内。我怀疑它只会给这个问题带来困惑。

main包
进口(
“fmt”
“数学”
“排序”
)
类型(
有限集结构{
设置映射[float64]为空
}
无结构{}
范围结构{
下二进制浮点数64
上限浮动64
}
)
func main(){
数据:=映射[float64]无{
math.Inf(-1):无{},
1:没什么{},
2:没什么{},
5:没什么{},
math.Inf(1):无{},
}
r:=过程(数据)
fmt.Printf(“%v\n”,r)
}
func进程(数据映射[float64]无)[]范围{
键:=make([]浮点64,0)
对于k:=范围数据{
keys=追加(keys,k)
}
排序。浮点64s(键)
r:=制造([]范围,0)
对于i:=0;i
您的示例
FiniteSet
与预期输出的关系如何?例如,
0
6
在您的输入中没有提及,但是在您的输出中有
0
6
@icza的范围,我可能没有说得足够清楚,但我想要键之间的值。不包括带FiniteSet的钥匙。如果FiniteSet中有2,6和8,我想要一个3到5,7到7的范围。我已经编辑了这个问题。你不能按顺序遍历地图,因为地图是无序的。您必须将密钥收集到一个切片中,对切片进行排序,然后可以对其进行迭代,生成范围。哪一部分会让你头痛?@icza这也许可以解释一些事情,我想我现在也许可以解决它。谢谢