Sobes.tech
Junior — Middle

¿Cómo implementar la transferencia de valores de argumentos a una función si los parámetros no se pasaron explícitamente en la llamada?

sobes.tech AI

Respuesta de la IA

En Go no hay soporte para parámetros predeterminados como en algunos otros lenguajes. Para implementar la transmisión de valores de argumentos cuando los parámetros no se han pasado explícitamente, generalmente se utilizan uno de los siguientes enfoques:

  1. Uso de parámetros variables (...) — permite pasar una cantidad arbitraria de argumentos, y dentro de la función verificar si se han pasado y establecer valores predeterminados si es necesario.
func ejemplo(args ...int) {
    var val int
    if len(args) > 0 {
        val = args[0]
    } else {
        val = 42 // valor predeterminado
    }
    fmt.Println(val)
}
  1. Pasar una estructura con configuraciones — se crea una estructura con los parámetros, y si los campos no están llenos, dentro de la función se establecen valores predeterminados.
type Config struct {
    Param int
}

func ejemplo(cfg Config) {
    if cfg.Param == 0 {
        cfg.Param = 42 // valor predeterminado
    }
    fmt.Println(cfg.Param)
}
  1. Uso de punteros y verificación de nil — si el parámetro se pasa como puntero, se puede verificar si se ha pasado y establecer un valor predeterminado.

De esta manera, en Go generalmente se implementa el comportamiento de parámetros predeterminados mediante verificaciones adicionales dentro de la función, ya que no existe sintaxis para parámetros predeterminados.