Sobes.tech
Junior — Middle

Kako je implementirana transmisija podrazumevanih vrednosti u parametrima funkcija u jeziku Go?

sobes.tech АИ

Одговор од АИ

U jeziku Go nema ugrađene podrške za funkcijske parametre sa podrazumevanim vrednostima, kao u nekim drugim jezicima (npr. Python ili C++). Da biste implementirali slično ponašanje, obično se koristi jedan od sledećih pristupa:

  1. Preopterećenje funkcija putem promenljivih parametara — proslediti funkciji promenljiv broj argumenata i proveriti njihovo prisustvo unutar funkcije:
func greet(name string, messages ...string) {
    msg := "Hello"
    if len(messages) > 0 {
        msg = messages[0]
    }
    fmt.Println(msg, name)
}

// Pozivi:
greet("Alice")           // Hello Alice
greet("Bob", "Hi")     // Hi Bob
  1. Korišćenje struktura sa podešavanjima — proslediti funkciji strukturu sa parametrima, gde se mogu postaviti podrazumevane vrednosti pri kreiranju:
type Config struct {
    Timeout int
}

func doSomething(cfg Config) {
    if cfg.Timeout == 0 {
        cfg.Timeout = 30 // podrazumevana vrednost
    }
    // ...
}

// Poziv:
doSomething(Config{})
  1. Kreiranje pomoćnih funkcija-konstruktora sa različitim skupovima parametara.

Na ovaj način, u Go-u, podrazumevane vrednosti se implementiraju putem eksplicitne logike unutar funkcije ili putem struktura, a ne putem sintakse jezika.