Sobes.tech
Junior — Middle

Kaip įgyvendinti argumentų reikšmių perdavimą funkcijai, jei parametrai nebuvo aiškiai perduoti kvietimo metu?

sobes.tech AI

Atsakymas iš AI

Go kalboje nėra parametruose numatytos reikšmės kaip kai kuriose kitose kalbose. Norint įgyvendinti argumentų reikšmių perdavimą, jei parametrai nebuvo aiškiai perduoti, paprastai taikomi vienas iš šių požiūrių:

  1. Naudojant kintamuosius parametrus (...) — leidžia perduoti bet kokį argumentų skaičių, o funkcijos viduje patikrinti, ar jie buvo perduoti, ir, jei reikia, nustatyti numatytąsias reikšmes.
func pavyzdys(args ...int) {
    var reikšmė int
    if len(args) > 0 {
        reikšmė = args[0]
    } else {
        reikšmė = 42 // numatytoji reikšmė
    }
    fmt.Println(reikšmė)
}
  1. Konfigūracijos struktūros perdavimas — sukuriama struktūra su parametrais, ir jei laukai nėra užpildyti, funkcijos viduje nustatomos numatytosios reikšmės.
type Config struct {
    Param int
}

func pavyzdys(cfg Config) {
    if cfg.Param == 0 {
        cfg.Param = 42 // numatytoji reikšmė
    }
    fmt.Println(cfg.Param)
}
  1. Naudojant nuorodas ir tikrinant dėl nil — jei parametras perduodamas kaip nuoroda, galima patikrinti, ar jis buvo perduotas, ir nustatyti numatytąją reikšmę.

Taip, Go kalboje, paprastai, numatytųjų parametrų elgesys įgyvendinamas papildomais patikrinimais funkcijos viduje, nes sintaksė numatytųjų parametrų nėra.