Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

290
Vistas
parámetros "dinámicos" en un lenguaje fuertemente tipado?

He estado aprendiendo a codificar y recientemente terminé un proyecto de servidor-cliente en javascript. En ese servidor (Node.js) me escribí una función de "respondedor" que llamé docenas de veces a lo largo del programa:

 function sendResponse(req, res, err, response, redirect) { if (err) { res.status(err.status) return res.json(err.message || err.error) } if (response) { res.status(response.status) return res.json(response.response || response.message) } if (redirect) { return res.redirect(redirect) } res.status(500) return res.json({message: err.err || "Unknown server error", user: req.userObj.email || null}) }

Ahora estoy tratando de escribir un backend de servicio de API similar en Go. Si bien, por supuesto, puede pasar nil a las funciones, lo que no puedo entender es cómo permitir que cualquiera de esos parámetros sea "dinámico". ¿Quizás ese es el punto de un lenguaje tipificado estáticamente? En javascript, el parámetro de response podría ser un objeto con claves y valores de cadena, o podría tener objetos anidados con datos adicionales para enviar al cliente. En Go, podría tomar un mapa como parámetro, pero tendría que definirlo de antemano como un mapa cadena:cadena. Si quisiera anidar un mapa, también tendría que definir las asignaciones del mapa anidado.

Esto es lo más cerca que he estado en Go:

 func responder(w http.ResponseWriter, m map[string]string, s int) { w.WriteHeader(s) w.Header().Set("Content-Type", "application/json; charset=utf-8") if m != nil { r := createJson(m) w.Write(r) return } w.Write([]byte("Good job")) return } func createJson(m map[string]string) ([]byte) { j, err := json.Marshal(m) if err != nil { fmt.Println(err) return nil } return j }

Pero empiezo a tener la sensación de que solo estoy pensando en cómo hacer las cosas incorrectamente en lenguajes escritos estáticamente.

Editar: ¿Es este un trabajo para punteros? ¿Puedo usar un puntero a un mapa que puede o no contener mapas anidados?

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

puede crear una estructura con un campo de tipo dentro de la estructura y actuar de acuerdo con el tipo usando el cambio de mayúsculas y minúsculas.

about 4 years ago · Juan Pablo Isaza Denunciar

0

puede usar la interfaz{} aquí como se muestra a continuación

 func responder(w http.ResponseWriter, m interface{}, s int) { w.WriteHeader(s) w.Header().Set("Content-Type", "application/json; charset=utf-8") if m != nil { r := createJson(m) w.Write(r) return } w.Write([]byte("Good job")) return } func createJson(m interface{}) ([]byte) { j, err := json.Marshal(m) if err != nil { fmt.Println(err) return nil } return j }
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda