私は注文リストのための構造を持っています。私は注文map
がほしいと思う方法を見つける。しかし、私はすべてのタイプのためにこれを作成したくない、それは私が持っている。別のコードが必要なのでしょうか?または、どのように普遍的に書き直すことができるのですか。すべてのタイプで使用できます。Prev
とNext
です。どのように汎用構造体を使用
type Post struct { //for example
P string
O int
Prev, Next *Post
}
type Act struct {
I int
Prev, Next *Act
}
type Map struct {
Act map[int]*Act
First, Last *Act
}
func (m *Map) New(a *Act) int {
Ida++
f := Ida
a.Id = Ida
m.Act[Ida] = a
if m.First == nil {
m.First = a
} else {
m.Last.Next = a
a.Prev = m.Last
}
m.Last = a
return f
}
func (m *Map) Del(s int) {
if _, ok := m.Act[s]; ok {
if m.Last == m.First {
m.Last = nil
m.First = nil
delete(m.Act, s)
return
}
if m.Last == m.Act[s] {
m.Last = m.Act[s].Prev
m.Act[s].Prev.Next = nil
delete(m.Act, s)
return
}
if m.First == m.Act[s] {
m.First = m.Act[s].Next
m.Act[s].Next.Prev = nil
delete(m.Act, s)
return
}
m.Act[s].Prev.Next = m.Act[s].Next
m.Act[s].Next.Prev = m.Act[s].Prev
delete(m.Act, s)
return
}
}
できません。 GOはジェネリックを持っていません:) – Nadh
@Nadh私はそれを書き直す必要がありますか?別の[質問](http://stackoverflow.com/questions/41887596/golang-map-sort)にお答えできますか?要素が必要な要素の前に、earlieを削除できるため、配列の順序は使用しません。そして私は心配します、それは別の要素を削除します – Kojan