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
}

Επομένως, αν θέλετε να αλλάξετε δεδομένα μέσα στη συνάρτηση, περνάτε έναν δείκτη στη δομή. Αν δεν χρειάζονται αλλαγές, μπορείτε να περάσετε με τιμή.