Sobes.tech
Junior — Middle

Πώς υλοποιείτε τη μεταφορά τιμών επιχειρημάτων σε μια συνάρτηση, εάν οι παράμετροι δεν έχουν περαστεί ρητά κατά την κλήση;

sobes.tech AI

Απάντηση από AI

Στη Go δεν υπάρχει υποστήριξη για προεπιλεγμένες παραμέτρους όπως σε ορισμένες άλλες γλώσσες. Για να υλοποιήσετε τη μεταφορά τιμών επιχειρημάτων όταν οι παράμετροι δεν έχουν δοθεί ρητά, συνήθως εφαρμόζονται μία από τις ακόλουθες προσεγγίσεις:

  1. Χρήση μεταβλητών παραμέτρων (...) — επιτρέπει την μεταφορά αυθαίρετου αριθμού επιχειρημάτων, και μέσα στη συνάρτηση ελέγχεται αν έχουν δοθεί και ορίζονται προεπιλεγμένες τιμές αν χρειάζεται.
func παράδειγμα(args ...int) {
    var val int
    if len(args) > 0 {
        val = args[0]
    } else {
        val = 42 // προεπιλεγμένη τιμή
    }
    fmt.Println(val)
}
  1. Μεταφορά δομής με ρυθμίσεις — δημιουργείται μια δομή με παραμέτρους, και αν τα πεδία δεν έχουν συμπληρωθεί, μέσα στη συνάρτηση ορίζονται προεπιλεγμένες τιμές.
type Config struct {
    Param int
}

func παράδειγμα(cfg Config) {
    if cfg.Param == 0 {
        cfg.Param = 42 // προεπιλεγμένη τιμή
    }
    fmt.Println(cfg.Param)
}
  1. Χρήση δεικτών και έλεγχος για nil — αν η παράμετρος δοθεί ως δείκτης, μπορεί να ελεγχθεί αν έχει δοθεί και να οριστεί μια προεπιλεγμένη τιμή.

Έτσι, στη Go, συνήθως υλοποιείται η συμπεριφορά των προεπιλεγμένων παραμέτρων μέσω πρόσθετων ελέγχων μέσα στη συνάρτηση, καθώς η σύνταξη για προεπιλεγμένες παραμέτρους δεν υπάρχει.