Метод list.List.InsertBefore
Метод InsertBefore структуры list.List вставляет новый
элемент со значением v перед указанным элементом
mark. Первым параметром метод принимает значение
для вставки, вторым — указатель на элемент, перед которым
нужно вставить новый элемент. Метод возвращает вставленный
элемент типа *list.Element. Если указанный элемент
не принадлежит списку, метод не выполняет операцию и
возвращает nil.
Синтаксис
func (l *List) InsertBefore(v interface{}, mark *Element) *Element
Пример
Давайте создадим список из трех элементов и вставим новый элемент перед вторым элементом:
package main
import (
"container/list"
"fmt"
)
func main() {
l := list.New()
l.PushBack("a")
mark := l.PushBack("b")
l.PushBack("c")
// Вставляем "x" перед "b"
res := l.InsertBefore("x", mark)
// Выводим весь список
for e := l.Front(); e != nil; e = e.Next() {
fmt.Println(e.Value)
}
fmt.Println("Inserted element:", res.Value)
}
Результат выполнения кода:
"a"
"x"
"b"
"c"
"Inserted element: x"
Пример
Давайте попробуем вставить элемент перед элементом,
который не принадлежит списку. В этом случае метод
вернет nil, и список не изменится:
package main
import (
"container/list"
"fmt"
)
func main() {
l := list.New()
l.PushBack("a")
l.PushBack("b")
// Создаем элемент, не принадлежащий списку
otherList := list.New()
mark := otherList.PushBack("x")
res := l.InsertBefore("z", mark)
fmt.Println("Result:", res)
fmt.Println("List length:", l.Len())
for e := l.Front(); e != nil; e = e.Next() {
fmt.Println(e.Value)
}
}
Результат выполнения кода:
"Result: <nil>"
"List length: 2"
"a"
"b"
Пример
Давайте вставим элемент перед первым элементом списка.
Для этого получим первый элемент с помощью метода
Front:
package main
import (
"container/list"
"fmt"
)
func main() {
l := list.New()
l.PushBack("a")
l.PushBack("b")
l.PushBack("c")
// Получаем первый элемент
first := l.Front()
res := l.InsertBefore("start", first)
for e := l.Front(); e != nil; e = e.Next() {
fmt.Println(e.Value)
}
fmt.Println("Inserted element:", res.Value)
}
Результат выполнения кода:
"start"
"a"
"b"
"c"
"Inserted element: start"
Смотрите также
-
метод
list.List.InsertAfter,
который вставляет элемент после указанного элемента -
метод
list.List.PushFront,
который вставляет элемент в начало списка -
метод
list.List.PushBack,
который вставляет элемент в конец списка -
метод
list.List.Remove,
который удаляет указанный элемент из списка