Sobes.tech
Junior — Middle

Jak jest zaimplementowany przesyłanie wartości domyślnych w parametrach funkcji w języku Go?

sobes.tech AI

Odpowiedź od AI

W języku Go nie ma wbudowanego wsparcia dla parametrów funkcji z wartościami domyślnymi, jak w niektórych innych językach (np. Python czy C++). Aby zaimplementować podobne zachowanie, zwykle stosuje się jedno z następujących podejść:

  1. Przeciążanie funkcji za pomocą parametrów zmiennych — przekazywanie do funkcji zmiennej liczby argumentów i sprawdzanie ich obecności wewnątrz:
func greet(name string, messages ...string) {
    msg := "Hello"
    if len(messages) > 0 {
        msg = messages[0]
    }
    fmt.Println(msg, name)
}

// Wywołania:
greet("Alice")           // Hello Alice
greet("Bob", "Hi")     // Hi Bob
  1. Użycie struktur z ustawieniami — przekazywanie do funkcji struktury z parametrami, gdzie można ustawić wartości domyślne podczas tworzenia:
type Config struct {
    Timeout int
}

func doSomething(cfg Config) {
    if cfg.Timeout == 0 {
        cfg.Timeout = 30 // wartość domyślna
    }
    // ...
}

// Wywołanie:
doSomething(Config{})
  1. Tworzenie funkcji pomocniczych-konstruktorów z różnymi zestawami parametrów.

W ten sposób, w Go, wartości domyślne są realizowane przez jawą logikę wewnątrz funkcji lub przez struktury, a nie przez składnię języka.