Sobes.tech
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:

  1. 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)
}
  1. 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)
}
  1. 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ă.