Тип list.Element

Тип list.Element представляет собой элемент двусвязного списка. Он содержит поле Value, которое хранит значение элемента (тип interface{}), а также внутренние указатели на следующий и предыдущий элементы. Основные методы: Next для перехода к следующему элементу и Prev для перехода к предыдущему.

Синтаксис

gotype Element struct {
  Value interface{}
  // содержит скрытые поля
}

func (e *Element) Next() *Element
func (e *Element) Prev() *Element

Пример

Создадим список, добавим в него элементы и получим ссылку на один из них:

gopackage main

import (
  "container/list"
  "fmt"
)

func main() {
  l := list.New()
  elem1 := l.PushBack("a")
  elem2 := l.PushBack("b")
  elem3 := l.PushBack("c")

  // Получаем ссылку на элемент
  e := elem2
  fmt.Println(e.Value)
}

Результат выполнения кода:

go"b"

Метод Next()

Метод Next возвращает следующий элемент списка или nil, если текущий элемент является последним:

gopackage main

import (
  "container/list"
  "fmt"
)

func main() {
  l := list.New()
  e := l.PushBack("a")
  l.PushBack("b")
  l.PushBack("c")

  next := e.Next()
  fmt.Println(next.Value)
}

Результат выполнения кода:

go"b"

Метод Prev()

Метод Prev возвращает предыдущий элемент списка или nil, если текущий элемент является первым:

gopackage main

import (
  "container/list"
  "fmt"
)

func main() {
  l := list.New()
  l.PushBack("a")
  e := l.PushBack("b")
  l.PushBack("c")

  prev := e.Prev()
  fmt.Println(prev.Value)
}

Результат выполнения кода:

go"a"

Использование с List.Remove

Элемент может быть удален из списка с помощью метода Remove:

gopackage main

import (
  "container/list"
  "fmt"
)

func main() {
  l := list.New()
  e := l.PushBack("a")
  l.PushBack("b")
  l.PushBack("c")

  l.Remove(e)

  for elem := l.Front(); elem != nil; elem = elem.Next() {
    fmt.Println(elem.Value)
  }
}

Результат выполнения кода:

go"b"
"c"

Смотрите также

  • тип list.List,
    который представляет двусвязный список
  • метод list.List.PushBack,
    который добавляет элемент в конец списка
  • метод list.List.PushFront,
    который добавляет элемент в начало списка
  • метод list.List.Remove,
    который удаляет элемент из списка