Sobes.tech
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.