Sobes.tech
Junior — Middle

Golang tilida funksiyalar va tuzilmalar o'rtasida elementlarni qanday o'tkazish amalga oshiriladi?

sobes.tech AI

AIdan javob

Go tilida, funksiyalar va tuzilmalar orasida elementlarni uzatish ikki asosiy usul bilan amalga oshirilishi mumkin: qiymat orqali va ko'rsatkich orqali.

  • Qiymat orqali: tuzilma yoki o'zgaruvchi o'zi nusxa olinadi, funksiyada o'zgarishlar asliga ta'sir qilmaydi.
  • Ko'rsatkich orqali: tuzilma yoki o'zgaruvchining manzili uzatiladi, bu funksiyaga asl ma'lumotlarni o'zgartirish imkonini beradi.

Misol:

package main
import "fmt"

type Person struct {
    Name string
    Age  int
}

func updateByValue(p Person) {
    p.Age = 30 // faqat nusxa o'zgaradi
}

func updateByPointer(p *Person) {
    p.Age = 30 // asl o'zgaradi
}

func main() {
    person := Person{Name: "Ivan", Age: 25}
    updateByValue(person)
    fmt.Println(person.Age) // 25

    updateByPointer(&person)
    fmt.Println(person.Age) // 30
}

Shuning uchun, agar funksiyada ma'lumotlarni o'zgartirmoqchi bo'lsangiz, tuzilmaga ko'rsatkich yuborasiz. Agar o'zgartirishlar kerak bo'lmasa, qiymat orqali yuborishingiz mumkin.