Метод list.List.Remove

Метод Remove удаляет элемент из двусвязного списка. В качестве параметра метод принимает указатель на элемент типа *list.Element, который нужно удалить. Метод возвращает значение удаленного элемента в виде интерфейса any. Если переданный элемент не принадлежит списку или равен nil, метод не выполняет никаких действий и возвращает nil.

Синтаксис

gofunc (l *List) Remove(e *Element) any

Пример

Давайте создадим список из пяти элементов и удалим из него элемент со значением 'c':

gopackage main

import (
  "container/list"
  "fmt"
)

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

  var elem *list.Element
  for e := l.Front(); e != nil; e = e.Next() {
    if e.Value == "c" {
      elem = e
      break
    }
  }

  res := l.Remove(elem)
  fmt.Println(res)

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

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

go"c"
"a"
"b"
"d"
"e"

Пример

Давайте попробуем удалить элемент, который не принадлежит списку. Метод вернет nil и не изменит список:

gopackage main

import (
  "container/list"
  "fmt"
)

func main() {
  l1 := list.New()
  l1.PushBack("a")
  l1.PushBack("b")

  l2 := list.New()
  l2.PushBack("x")
  l2.PushBack("y")

  elem := l2.Front()
  res := l1.Remove(elem)

  fmt.Println(res)
  fmt.Println("Length of l1:", l1.Len())
  fmt.Println("Length of l2:", l2.Len())
}

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

go<nil>
"Length of l1: 2"
"Length of l2: 2"

Пример

Метод Remove возвращает значение удаленного элемента, поэтому его удобно использовать для получения данных при удалении:

gopackage main

import (
  "container/list"
  "fmt"
)

func main() {
  l := list.New()
  l.PushBack(10)
  l.PushBack(20)
  l.PushBack(30)

  elem := l.Back()
  res := l.Remove(elem)

  fmt.Printf("Removed value: %d\n", res)
  fmt.Println("Remaining elements:")

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

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

go"Removed value: 30"
"Remaining elements:"
"10"
"20"

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

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