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
}
თუ გსურთ მონაცემების შეცვლა ფუნქციის შიგნით, გადაუგზავნეთ მაჩვენებელი სტრუქტურას. თუ ცვლილებები არ არის საჭირო, შეგიძლიათ მნიშვნელობით გადაცემა.