Sobes.tech
Назад к вопросам
Junior — Middle
81

Как реализовать передачу значений аргументов в функцию, если параметры не были явно переданы при вызове?

Ответ от нейросети

sobes.tech AI

В Go нет поддержки параметров по умолчанию, как в некоторых других языках. Чтобы реализовать передачу значений аргументов, если параметры не были явно переданы, обычно применяют один из следующих подходов:

  1. Использование вариативных параметров (...) — позволяет передать произвольное количество аргументов, а внутри функции проверить, были ли они переданы, и установить значения по умолчанию при необходимости.
func example(args ...int) {
    var val int
    if len(args) > 0 {
        val = args[0]
    } else {
        val = 42 // значение по умолчанию
    }
    fmt.Println(val)
}
  1. Передача структуры с настройками — создаётся структура с параметрами, и если поля не заполнены, внутри функции устанавливаются значения по умолчанию.
type Config struct {
    Param int
}

func example(cfg Config) {
    if cfg.Param == 0 {
        cfg.Param = 42 // значение по умолчанию
    }
    fmt.Println(cfg.Param)
}
  1. Использование указателей и проверка на nil — если параметр передан как указатель, можно проверить, был ли он передан, и задать значение по умолчанию.

Таким образом, в Go обычно реализуют поведение параметров по умолчанию через дополнительные проверки внутри функции, так как синтаксиса для параметров по умолчанию нет.