Junior — Middle
Avez-vous de l'expérience dans la mise en œuvre et l'utilisation de listes chaînées dans des projets?
sobes.tech IA
Réponse de l'IA
Oui, dans les projets en Go, il est courant d’implémenter et d’utiliser des listes chaînées, surtout lorsque la gestion dynamique des collections avec des insertions et suppressions fréquentes est requise.
La bibliothèque standard de Go comprend le package container/list, qui implémente une liste doublement chaînée. Exemple d’utilisation :
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)
}
}
Si vous souhaitez implémenter une liste chaînée vous-même, vous pouvez définir la structure du nœud et des méthodes pour insérer, supprimer et parcourir :
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
}
}
Cette approche permet une gestion flexible des éléments de la liste, mais dans la plupart des cas, pour plus de commodité et de fiabilité, il est préférable d’utiliser la liste container/list prête à l’emploi.