Ce face container/list.List.Front
l.Front() returnează primul element, iar l.Back() ultimul. Pentru o listă goală, ambele returnează nil. Parcurgerea standard este for e := l.Front(); e != nil; e = e.Next() { ... }. De la coadă spre început folosești l.Back() și e.Prev().
l.Len() returnează numărul de elemente. Este o operație instantanee: lista ține minte lungimea, nu numără elementele.
Ce returnează
Front: primul *list.Element sau nil. Len: un int.
Exemple
Exemplul 1: Parcurgere înainte și înapoi
package main
import (
"container/list"
"fmt"
)
func main() {
l := list.New()
for _, n := range []int{10, 20, 30} {
l.PushBack(n)
}
fmt.Println("Elemente:", l.Len())
fmt.Println("Primul:", l.Front().Value, "Ultimul:", l.Back().Value)
suma := 0
for e := l.Front(); e != nil; e = e.Next() {
suma += e.Value.(int)
}
fmt.Println("Suma:", suma)
for e := l.Back(); e != nil; e = e.Prev() {
fmt.Print(e.Value, " ")
}
fmt.Println()
}
Rezultat
Elemente: 3
Primul: 10 Ultimul: 30
Suma: 60
30 20 10
Exemplul 2: Lista goală
package main
import (
"container/list"
"fmt"
)
func main() {
l := list.New()
fmt.Println(l.Len(), l.Front() == nil)
if e := l.Front(); e != nil {
fmt.Println(e.Value)
} else {
fmt.Println("Lista este goală")
}
}
Rezultat
0 true
Lista este goală
Greșeli frecvente
- Citești
l.Front().Valuefără să verifici lista goală:Front()estenilși programul se oprește cupanic(nil pointer dereference).
Comenzi înrudite
container/list.New: Lista dublu înlănțuită din biblioteca standard: tipul list.List și funcția list.New care creează o listă goală.container/list.List.PushBack: PushBack adaugă o valoare la sfârșitul listei, PushFront la început; ambele returnează elementul nou creat.container/list.List.Remove: Scoate elementul e din listă și returnează valoarea lui.