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
}
Επομένως, αν θέλετε να αλλάξετε δεδομένα μέσα στη συνάρτηση, περνάτε έναν δείκτη στη δομή. Αν δεν χρειάζονται αλλαγές, μπορείτε να περάσετε με τιμή.