Junior — Middle
Cum se implementează transferul valorilor argumentelor către o funcție dacă parametrii nu au fost transmiteți explicit la apel?
sobes.tech AI
Răspuns de la AI
În Go nu există suport pentru parametri predefiniți ca în unele alte limbaje. Pentru a implementa transmiterea valorilor argumentelor atunci când parametrii nu au fost transmiteți explicit, se aplică de obicei una dintre următoarele abordări:
- Utilizarea parametrilor variabili (
...) — permite transmiterea unui număr arbitrar de argumente, iar în interiorul funcției se verifică dacă au fost transmise și se stabilesc valorile implicite dacă este necesar.
func exemplu(args ...int) {
var val int
if len(args) > 0 {
val = args[0]
} else {
val = 42 // valoare implicită
}
fmt.Println(val)
}
- Transmiterea unei structuri cu setări — se creează o structură cu parametri, iar dacă câmpurile nu sunt completate, în interiorul funcției se stabilesc valorile implicite.
type Config struct {
Param int
}
func exemplu(cfg Config) {
if cfg.Param == 0 {
cfg.Param = 42 // valoare implicită
}
fmt.Println(cfg.Param)
}
- Utilizarea pointerilor și verificarea pentru nil — dacă parametrul este transmis ca pointer, se poate verifica dacă a fost transmis și se setează o valoare implicită.
Astfel, în Go, se implementează de obicei comportamentul parametrilor predefiniți prin verificări suplimentare în interiorul funcției, deoarece sintaxa pentru parametri predefiniți nu există.