Sobes.tech
Junior — Middle

Ako je implementovaný prenos predvolených hodnôt v parametroch funkcií v jazyku Go?

sobes.tech AI

Odpoveď od AI

V jazyku Go neexistuje vstavan podpora za parametre funkcií s predvolenými hodnotami, ako je to v niektorých iných jazykoch (napríklad Python alebo C++). Na implementáciu podobného správania sa zvyčajne používajú jeden z nasledujúcich prístupov:

  1. Preťaženie funkcií pomocou variabilných parametrov — odovzdanie funkcii variabilného počtu argumentov a ich interná kontrola:
func greet(name string, messages ...string) {
    msg := "Hello"
    if len(messages) > 0 {
        msg = messages[0]
    }
    fmt.Println(msg, name)
}

// Volania:
greet("Alice")           // Hello Alice
greet("Bob", "Hi")     // Hi Bob
  1. Použitie štruktúr s nastaveniami — odovzdanie funkcii štruktúry s parametrami, kde je možné nastaviť predvolené hodnoty pri vytváraní:
type Config struct {
    Timeout int
}

func doSomething(cfg Config) {
    if cfg.Timeout == 0 {
        cfg.Timeout = 30 // predvolená hodnota
    }
    // ...
}

// Volanie:
doSomething(Config{})
  1. Vytvorenie pomocných funkcií-konštruktorov s rôznymi sadami parametrov.

Týmto spôsobom sú v Go predvolené hodnoty implementované pomocou explicitnej logiky vo vnútri funkcie alebo pomocou štruktúr, nie pomocou syntaxe jazyka.