Sobes.tech
Junior — Middle

Jak je implementována předávání výchozích hodnot v parametrech funkcí v jazyce Go?

sobes.tech AI

Odpověď od AI

V jazyce Go není vestavěná podpora parametrů funkcí s výchozími hodnotami, jako je tomu v některých jiných jazycích (například Python nebo C++). Pro implementaci podobného chování se obvykle používá jeden z následujících přístupů:

  1. Přetížení funkcí pomocí proměnných parametrů — předat funkci proměnný počet argumentů a uvnitř je zkontrolovat:
func greet(name string, messages ...string) {
    msg := "Hello"
    if len(messages) > 0 {
        msg = messages[0]
    }
    fmt.Println(msg, name)
}

// Volání:
greet("Alice")           // Hello Alice
greet("Bob", "Hi")     // Hi Bob
  1. Použití struktur s nastaveními — předat funkci strukturu s parametry, kde lze při vytváření nastavit výchozí hodnoty:
type Config struct {
    Timeout int
}

func doSomething(cfg Config) {
    if cfg.Timeout == 0 {
        cfg.Timeout = 30 // výchozí hodnota
    }
    // ...
}

// Volání:
doSomething(Config{})
  1. Vytvoření pomocných funkcí-konstruktorů s různými sadami parametrů.

Tímto způsobem jsou ve Go výchozí hodnoty implementovány pomocí explicitní logiky uvnitř funkce nebo přes struktury, nikoli přes syntax jazyka.