Sobes.tech
Junior — Middle

Como implementar a transferência de valores de argumentos para uma função se os parâmetros não foram passados explicitamente na chamada?

sobes.tech IA

Resposta da IA

Em Go, não há suporte para parâmetros padrão como em algumas outras linguagens. Para implementar a passagem de valores de argumentos quando os parâmetros não são explicitamente passados, geralmente utilizam-se uma das seguintes abordagens:

  1. Uso de parâmetros variáveis (...) — permite passar uma quantidade arbitrária de argumentos, e dentro da função verificar se foram passados e definir valores padrão se necessário.
func exemplo(args ...int) {
    var val int
    if len(args) > 0 {
        val = args[0]
    } else {
        val = 42 // valor padrão
    }
    fmt.Println(val)
}
  1. Passagem de uma estrutura com configurações — cria-se uma estrutura com os parâmetros, e se os campos não estiverem preenchidos, dentro da função são atribuídos valores padrão.
type Config struct {
    Param int
}

func exemplo(cfg Config) {
    if cfg.Param == 0 {
        cfg.Param = 42 // valor padrão
    }
    fmt.Println(cfg.Param)
}
  1. Uso de ponteiros e verificação de nil — se o parâmetro for passado como ponteiro, pode-se verificar se foi passado e definir um valor padrão.

Dessa forma, em Go, geralmente implementa-se o comportamento de parâmetros padrão por meio de verificações adicionais dentro da função, já que a sintaxe para parâmetros padrão não existe.