Sobes.tech
Back to questions
Junior — Middle
84

Как реализована передача значений по умолчанию в параметрах функций в языке Go?

Answer from AI

sobes.tech AI

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

  1. Перегрузка функций через вариативные параметры — передать в функцию переменное число аргументов и внутри проверять их наличие:
func greet(name string, messages ...string) {
    msg := "Hello"
    if len(messages) > 0 {
        msg = messages[0]
    }
    fmt.Println(msg, name)
}

// Вызовы:
greet("Alice")           // Hello Alice
greet("Bob", "Hi")     // Hi Bob
  1. Использование структур с настройками — передавать в функцию структуру с параметрами, где можно задать значения по умолчанию при создании:
type Config struct {
    Timeout int
}

func doSomething(cfg Config) {
    if cfg.Timeout == 0 {
        cfg.Timeout = 30 // значение по умолчанию
    }
    // ...
}

// Вызов:
doSomething(Config{})
  1. Создание вспомогательных функций-конструкторов с разными наборами параметров.

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