Sobes.tech
Junior — Middle

Чӣ гуна интиқоли унсурҳо байни функсияҳо ва сохторҳо дар забони Golang амалӣ мешавад?

sobes.tech AI

Ҷавоб аз AI

Дар забони Go, интиқоли унсурҳо байни функсияҳо ва структураҳо метавонад бо ду роҳи асосӣ амалӣ карда шавад: бо арзиш ва бо ишора.

  • Бо арзиш: худи структура ё тағирёбанда нусхабардорӣ мешавад, тағирот дар дохили функсия ба оригинал таъсир намерасонад.
  • Бо ишора: суроғаи структура ё тағирёбанда дода мешавад, ки ба функсия имкон медиҳад, ки маълумотҳои аслӣро тағир диҳад.

Масалан:

package main
import "fmt"

type Person struct {
    Name string
    Age  int
}

func updateByValue(p Person) {
    p.Age = 30 // танҳо нусха тағир меёбад
}

func updateByPointer(p *Person) {
    p.Age = 30 // оригинал тағир меёбад
}

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

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

Агар хоҳед, ки маълумотҳоро дар дохили функсия тағир диҳед, ишораро ба структура диҳед. Агар тағиротҳо зарур набошанд, метавонед бо арзиш диҳед.