주문 목록을 구조화했습니다. 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
}
}
수 없습니다. 가서 제네릭을 가지고 있지 않다. – Nadh
@Nadh 다시 써야 하나? 다른 [질문] (http://stackoverflow.com/questions/41887596/golang-map-sort)에 답변 해 주시겠습니까? 요소를 필요로하기 전에 요소가 earlie를 삭제할 수 있기 때문에 배열에 배열을 사용하지 않습니다. 그리고 나는 그것이 다른 요소를 삭제한다는 것을 걱정한다. – Kojan