Sobes.tech
Junior — Middle

Como é implementada a passagem de valores padrão nos parâmetros de funções na linguagem Go?

sobes.tech IA

Resposta da IA

Na linguagem Go, não há suporte incorporado para parâmetros de funções com valores padrão, como em algumas outras linguagens (por exemplo, Python ou C++). Para implementar um comportamento semelhante, geralmente usam-se uma das seguintes abordagens:

  1. Sobrecarga de funções através de parâmetros variáveis — passar um número variável de argumentos para a função e verificar sua presença internamente:
func greet(name string, messages ...string) {
    msg := "Hello"
    if len(messages) > 0 {
        msg = messages[0]
    }
    fmt.Println(msg, name)
}

// Chamadas:
greet("Alice")           // Hello Alice
greet("Bob", "Hi")     // Hi Bob
  1. Uso de estruturas com configurações — passar para a função uma estrutura com parâmetros, onde é possível definir valores padrão na sua criação:
type Config struct {
    Timeout int
}

func doSomething(cfg Config) {
    if cfg.Timeout == 0 {
        cfg.Timeout = 30 // valor padrão
    }
    // ...
}

// Chamada:
doSomething(Config{})
  1. Criação de funções construtoras auxiliares com diferentes conjuntos de parâmetros.

Dessa forma, em Go, valores padrão são implementados por lógica explícita dentro da função ou por estruturas, e não pela sintaxe da linguagem.