Go地图不保持插入顺序;您将必须自己实现此行为。
例:
type NavigationMap struct {
m map[string]navbarTab
keys []string
}
func NewNavigationMap() *NavigationMap { ... }
func (n *NavigationMap) Set(k string, v navbarTab) {
n.m[k] = v
n.keys = append(n.keys, k)
}
本示例不完整,并且未涵盖所有用例(例如,更新重复键上的插入顺序)。
如果您的用例包括多次重新插入相同的键(如果键 k 已在映射中,则不会更新键 k的 插入顺序):
func (n *NavigationMap) Set(k string, v navbarTab) {
_, present := n.m[k]
n.m[k] = v
if !present {
n.keys = append(n.keys, k)
}
}
选择满足您要求的最简单的方法。