Junior — Middle
Πώς υλοποιείται η μετάδοση προεπιλεγμένων τιμών στους παραμέτρους συναρτήσεων στη γλώσσα Go;
sobes.tech AI
Απάντηση από AI
Στη γλώσσα Go, δεν υπάρχει ενσωματωμένη υποστήριξη για παραμέτρους συναρτήσεων με προεπιλεγμένες τιμές, όπως σε ορισμένες άλλες γλώσσες (π.χ., Python ή C++). Για να υλοποιήσετε μια παρόμοια συμπεριφορά, συνήθως χρησιμοποιούνται μία από τις ακόλουθες προσεγγίσεις:
- Υπερφόρτωση συναρτήσεων μέσω μεταβλητών παραμέτρων — περάστε έναν μεταβλητό αριθμό επιχειρημάτων στη συνάρτηση και ελέγξτε την παρουσία τους εσωτερικά:
func greet(name string, messages ...string) {
msg := "Hello"
if len(messages) > 0 {
msg = messages[0]
}
fmt.Println(msg, name)
}
// Κλήσεις:
greet("Alice") // Hello Alice
greet("Bob", "Hi") // Hi Bob
- Χρήση δομών με ρυθμίσεις — περάστε στη συνάρτηση μια δομή με παραμέτρους, όπου μπορείτε να ορίσετε προεπιλεγμένες τιμές κατά τη δημιουργία:
type Config struct {
Timeout int
}
func doSomething(cfg Config) {
if cfg.Timeout == 0 {
cfg.Timeout = 30 // προεπιλεγμένη τιμή
}
// ...
}
// Κλήση:
doSomething(Config{})
- Δημιουργία βοηθητικών συναρτήσεων-κατασκευαστών με διαφορετικά σύνολα παραμέτρων.
Έτσι, στη Go, οι προεπιλεγμένες τιμές υλοποιούνται μέσω ρητής λογικής μέσα στη συνάρτηση ή μέσω δομών, και όχι μέσω της σύνταξης της γλώσσας.