Sobes.tech
Junior — Middle

Jak zaimplementować przekazywanie wartości argumentów do funkcji, jeśli parametry nie zostały wyraźnie przekazane podczas wywołania?

sobes.tech AI

Odpowiedź od AI

W Go nie ma wsparcia dla parametrów domyślnych jak w niektórych innych językach. Aby zaimplementować przekazywanie wartości argumentów, gdy parametry nie zostały jawnie przekazane, zazwyczaj stosuje się jedno z następujących podejść:

  1. Użycie parametrów zmiennych (...) — pozwala na przekazanie dowolnej liczby argumentów, a wewnątrz funkcji można sprawdzić, czy zostały przekazane, i ustawić wartości domyślne w razie potrzeby.
func przykład(args ...int) {
    var val int
    if len(args) > 0 {
        val = args[0]
    } else {
        val = 42 // wartość domyślna
    }
    fmt.Println(val)
}
  1. Przekazywanie struktury z ustawieniami — tworzy się strukturę z parametrami, a jeśli pola nie są wypełnione, wewnątrz funkcji ustawiane są wartości domyślne.
type Config struct {
    Param int
}

func przykład(cfg Config) {
    if cfg.Param == 0 {
        cfg.Param = 42 // wartość domyślna
    }
    fmt.Println(cfg.Param)
}
  1. Użycie wskaźników i sprawdzanie na nil — jeśli parametr jest przekazywany jako wskaźnik, można sprawdzić, czy został przekazany, i ustawić wartość domyślną.

W ten sposób w Go zwykle implementuje się zachowanie parametrów domyślnych poprzez dodatkowe sprawdzenia wewnątrz funkcji, ponieważ składnia dla parametrów domyślnych nie istnieje.