Junior — Middle
Ar turite patirties su susietų sąrašų įgyvendinimu ir naudojimu projektuose?
sobes.tech AI
Atsakymas iš AI
Taip, projektuose, parašytuose kalba Go, dažnai įgyvendinamos ir naudojamos susietosios sąrašai, ypač kai reikalingas dinaminis kolekcijų valdymas su dažnais įterpimais ir ištrynimais.
Go standartinėje bibliotekoje yra paketas container/list, kuris įgyvendina dvipusį susietąjį sąrašą. Pavyzdys:
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)
}
}
Jei norite patys įgyvendinti susietąjį sąrašą, galite apibrėžti mazgo struktūrą ir metodus įterpimui, šalinimui ir perėjimui:
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
}
}
Šis požiūris leidžia lankstesnį sąrašo elementų valdymą, tačiau daugeliu atvejų geriau naudoti paruoštą container/list.