Список пакетов
Обзор
Пакет list реализует двусвязный список.
Чтобы пройти по списку (где l — *List):
for e := l.Front(); e != nil; e = e.Next() {
// do something with e.Value
}
Пример
Код:
// Create a new list and put some numbers in it.
l := list.New()
e4 := l.PushBack(4)
e1 := l.PushFront(1)
l.InsertBefore(3, e4)
l.InsertAfter(2, e1)
// Iterate through list and print its contents.
for e := l.Front(); e != nil; e = e.Next() {
fmt.Println(e.Value)
}
Вывод:
1 2 3 4
Указатель
Примеры
Файлы пакета
list.go
тип Element
Element — элемент связного списка.
type Element struct {
// The value stored with this element.
Value any
// contains filtered or unexported fields
}
func (*Element) Next
func (e *Element) Next() *Element
Next возвращает следующий элемент списка или nil.
func (*Element) Prev
func (e *Element) Prev() *Element
Prev возвращает предыдущий элемент списка или nil.
тип List
List представляет собой двусвязный список. Нулевое значение List — пустой список, готовый к использованию.
type List struct {
// contains filtered or unexported fields
}
func New
func New() *List
New возвращает инициализированный список.
func (*List) Back
func (l *List) Back() *Element
Back возвращает последний элемент списка l или nil, если список пуст.
func (*List) Front
func (l *List) Front() *Element
Front возвращает первый элемент списка l или nil, если список пуст.
func (*List) Init
func (l *List) Init() *List
Init инициализирует список l или очищает его.
func (*List) InsertAfter
func (l *List) InsertAfter(v any, mark *Element) *Element
InsertAfter вставляет новый элемент e со значением v сразу после mark и возвращает e. Если mark не является элементом l, список не изменяется. mark не должен быть nil.
func (*List) InsertBefore
func (l *List) InsertBefore(v any, mark *Element) *Element
InsertBefore вставляет новый элемент e со значением v сразу перед mark и возвращает e. Если mark не является элементом l, список не изменяется. mark не должен быть nil.
func (*List) Len
func (l *List) Len() int
Len возвращает количество элементов списка l. Сложность — O(1).
func (*List) MoveAfter 1.2
func (l *List) MoveAfter(e, mark *Element)
MoveAfter перемещает элемент e на новую позицию после mark. Если e или mark не является элементом l либо e == mark, список не изменяется. Элемент и mark не должны быть nil.
func (*List) MoveBefore 1.2
func (l *List) MoveBefore(e, mark *Element)
MoveBefore перемещает элемент e на новую позицию перед mark. Если e или mark не является элементом l либо e == mark, список не изменяется. Элемент и mark не должны быть nil.
func (*List) MoveToBack
func (l *List) MoveToBack(e *Element)
MoveToBack перемещает элемент e в конец списка l. Если e не является элементом l, список не изменяется. Элемент не должен быть nil.
func (*List) MoveToFront
func (l *List) MoveToFront(e *Element)
MoveToFront перемещает элемент e в начало списка l. Если e не является элементом l, список не изменяется. Элемент не должен быть nil.
func (*List) PushBack
func (l *List) PushBack(v any) *Element
PushBack вставляет новый элемент e со значением v в конец списка l и возвращает e.
func (*List) PushBackList
func (l *List) PushBackList(other *List)
PushBackList добавляет копию другого списка в конец списка l. Списки l и other могут совпадать. Они не должны быть nil.
func (*List) PushFront
func (l *List) PushFront(v any) *Element
PushFront вставляет новый элемент e со значением v в начало списка l и возвращает e.
func (*List) PushFrontList
func (l *List) PushFrontList(other *List)
PushFrontList добавляет копию другого списка в начало списка l. Списки l и other могут совпадать. Они не должны быть nil.
func (*List) Remove
func (l *List) Remove(e *Element) any
Remove удаляет e из l, если e является элементом списка l. Метод возвращает значение элемента e.Value. Элемент не должен быть nil.
© Google, Inc.
Licensed under the Creative Commons Attribution License 3.0.
http://golang.org/pkg/container/list/