Junior — Middle
Aveți experiență în implementarea și utilizarea listelor înlănțuite în proiecte?
sobes.tech AI
Răspuns de la AI
Da, în proiectele Go se implementează și se utilizează frecvent liste înlănțuite, mai ales atunci când este necesară gestionarea dinamică a colecțiilor cu inserții și ștergeri frecvente.
În biblioteca standard Go există pachetul container/list, care implementează o listă dublu înlănțuită. Exemplu de utilizare:
package main
import (
"container/list"
"fmt"
)
func main() {
l := list.New()
l.PushBack(1)
l.PushBack(2)
l.PushFront(0)
for e := l.Front(); e != nil; e = e.Next() {
fmt.Println(e.Value)
}
}
Dacă doriți să implementați o listă înlănțuită singur, puteți defini structura nodului și metode pentru inserare, ștergere și traversare:
type Node struct {
value int
next *Node
}
type LinkedList struct {
head *Node
}
func (l *LinkedList) Insert(value int) {
newNode := &Node{value: value}
if l.head == nil {
l.head = newNode
return
}
current := l.head
for current.next != nil {
current = current.next
}
current.next = newNode
}
func (l *LinkedList) Traverse() {
current := l.head
for current != nil {
fmt.Println(current.value)
current = current.next
}
}
Această abordare permite gestionarea flexibilă a elementelor listei, dar în cele mai multe cazuri, pentru confort și fiabilitate, este mai bine să folosiți lista container/list gata făcută.