Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

302
Views
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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!