Sobes.tech
Junior — Middle

Loyihalarda bog'langan ro'yxatlarni amalga oshirish va foydalanish bo'yicha tajribangiz bormi?

sobes.tech AI

AIdan javob

Ha, Go loyihalarida ko‘pincha bog‘langan ro‘yxatlar amalga oshiriladi va ishlatiladi, ayniqsa, dinamik boshqaruv talab qilinsa, ko‘p joylashtirish va o‘chirishlar bilan.

Go ning standart kutubxonasida container/list paket mavjud bo‘lib, u ikki tomonlama bog‘langan ro‘yxatni amalga oshiradi. Foydalanish misoli:

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)
    }
}

Agar siz o‘zingiz bog‘langan ro‘yxatni mustaqil ravishda amalga oshirmoqchi bo‘lsangiz, tugun tuzilmasi va joylashtirish, o‘chirish va yurish uchun metodlarni aniqlashingiz mumkin:

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
    }
}

Bu yondashuv ro‘yxat elementlarini moslashuvchan boshqarish imkonini beradi, ammo ko‘p hollarda tayyor container/list dan foydalanish qulayroq va ishonchliroq bo‘ladi.