Sobes.tech
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 тайёр ва боэътимод беҳтар аст.