Junior — Middle
გაქვს გამოცდილება დაკავშირებული სია პროექტებში განხორციელებისა და გამოყენების?
sobes.tech AI
პასუხი AI-სგან
დიახ, Go-ის პროექტებში ხშირად ხორციელდება და გამოიყენება დაკავშირებული სია, განსაკუთრებით მაშინ, როდესაც საჭიროა დინამიური კოლექციების მართვა ხშირი ჩასმებისა და ამოღების ოპერაციებით.
Go-ის სტანდარტული ბიბლიოთეკაში არსებობს პაკეტი container/list, რომელიც ახორციელებს ორმხრივ დაკავშირებულ სიას. გამოყენების მაგალითი:
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)
}
}
თუ გსურთ თავად განახორციელოთ დაკავშირებული სია, შეგიძლიათ განსაზღვროთ კვანძის სტრუქტურა და მეთოდები ჩასმის, წაშლის და სიის გასავლელად:
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
}
}
ეს მიდგომა საშუალებას აძლევს მოქნილად მართოთ სიის ელემენტები, მაგრამ უმეტეს შემთხვევაში უკეთესია გამოიყენოთ მზად container/list.