{"id":177088,"date":"2025-02-05T07:30:00","date_gmt":"2025-02-05T06:30:00","guid":{"rendered":"https:\/\/liora.io\/es\/?p=177088"},"modified":"2026-08-24T19:08:29","modified_gmt":"2026-08-24T18:08:29","slug":"introduccion-al-desarrollo-de-golang","status":"publish","type":"post","link":"https:\/\/liora.io\/es\/introduccion-al-desarrollo-de-golang","title":{"rendered":"Introducci\u00f3n al desarrollo de Golang"},"content":{"rendered":"\n<p><strong>Golang, a menudo llamado simplemente Go, es un lenguaje de programaci\u00f3n de c\u00f3digo abierto dise\u00f1ado por Google y publicado en 2009. Creado por Robert Griesemer, Rob Pike y Ken Thompson, este lenguaje busca ofrecer una soluci\u00f3n r\u00e1pida, eficiente y f\u00e1cilmente mantenible para el desarrollo de software moderno, especialmente en sistemas distribuidos, la nube y las infraestructuras de back-end.<\/strong><\/p>\n\n\n<figure class=\"aligncenter is-resized size-full wp-block-image\" style=\"width:617px;max-width:100%;margin-top:32px;margin-right:auto;margin-bottom:32px;margin-left:auto\"><img alt=\"Los tres creadores de Go, de izquierda a derecha, Robert Griesemer, Rob Pike y Ken Thompson\" decoding=\"async\" height=\"349\" loading=\"lazy\" sizes=\"(max-width: 617px) 100vw, 617px\" src=\"https:\/\/liora.io\/app\/uploads\/sites\/7\/2025\/01\/createurs-golang.webp\" srcset=\"https:\/\/liora.io\/app\/uploads\/sites\/7\/2025\/01\/createurs-golang.webp 617w, https:\/\/liora.io\/app\/uploads\/sites\/7\/2025\/01\/createurs-golang-300x170.webp 300w\" style=\"width:100%;max-width:617px;height:auto\" width=\"617\"\/><figcaption class=\"wp-element-caption\">Los tres creadores de Go, de izquierda a derecha, Robert Griesemer, Rob Pike y Ken Thompson<\/figcaption><\/figure>\n\n\n<div class=\"wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex is-content-justification-center wp-container-core-buttons-is-layout-5ee10de4\" style=\"margin-top:32px;margin-bottom:32px\"><div class=\"wp-block-button\"><a class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/liora.io\/en\/courses\/cloud-dev\/cloud-engineer\">M\u00e1s sobre Golang<\/a><\/div><\/div>\n\n\n<h2 class=\"wp-block-heading\" id=\"para-que-campos-de-aplicacion\">\u00bfPara qu\u00e9 campos de aplicaci\u00f3n?<\/h2>\n\n\n<p>El lenguaje Go es de particular inter\u00e9s en diferentes campos, incluyendo espec\u00edficamente:<\/p>\n\n\n<ul class=\"wp-block-list\">\n<li aria-level=\"1\"><strong>Sistemas en la nube y distribuidos<\/strong>: Go es frecuentemente utilizado en entornos de cloud computing donde es especialmente valorado para aplicaciones en la nube nativa y microservicios.<\/li>\n<li aria-level=\"1\"><strong>Infraestructuras de back-end<\/strong>: Siendo un lenguaje compilado muy eficiente, Go es una excelente opci\u00f3n para los back-end de plataformas de gran envergadura, tales como los sistemas de gesti\u00f3n de datos y las API.<\/li>\n<li><strong>Servicios web<\/strong>: Muchas empresas lo utilizan para desarrollar programas Go que son confiables y escalables, como Docker o Kubernetes.<\/li>\n<\/ul>\n\n\n<h2 class=\"wp-block-heading\" id=\"ventajas-y-desventajas\">Ventajas y desventajas<\/h2>\n\n\n<p>Golang presenta numerosas ventajas, pero tambi\u00e9n tiene desventajas que es importante considerar.<\/p>\n\n\n<h3 class=\"wp-block-heading\" id=\"ventajas\">Ventajas<\/h3>\n\n\n<figure class=\"wp-block-image aligncenter size-full is-resized\" style=\"width:512px;max-width:100%;margin-top:32px;margin-right:auto;margin-bottom:32px;margin-left:auto\"><img alt=\"Ilustraci\u00f3n sobre Ventajas\" decoding=\"async\" height=\"512\" loading=\"lazy\" sizes=\"(max-width: 512px) 100vw, 512px\" src=\"https:\/\/liora.io\/app\/uploads\/sites\/7\/2025\/01\/image1.png\" srcset=\"https:\/\/liora.io\/app\/uploads\/sites\/7\/2025\/01\/image1.png 512w, https:\/\/liora.io\/app\/uploads\/sites\/7\/2025\/01\/image1-300x300.png 300w, https:\/\/liora.io\/app\/uploads\/sites\/7\/2025\/01\/image1-150x150.png 150w\" style=\"width:100%;max-width:512px;height:auto\" width=\"512\"\/><\/figure>\n\n\n<h3 class=\"wp-block-heading\" id=\"desventajas\">Desventajas<\/h3>\n\n\n<figure class=\"wp-block-image aligncenter size-full is-resized\" style=\"width:512px;max-width:100%;margin-top:32px;margin-right:auto;margin-bottom:32px;margin-left:auto\"><img alt=\"Ilustraci\u00f3n sobre Desventajas\" decoding=\"async\" height=\"512\" loading=\"lazy\" sizes=\"(max-width: 512px) 100vw, 512px\" src=\"https:\/\/liora.io\/app\/uploads\/sites\/7\/2025\/01\/image4.png\" srcset=\"https:\/\/liora.io\/app\/uploads\/sites\/7\/2025\/01\/image4.png 512w, https:\/\/liora.io\/app\/uploads\/sites\/7\/2025\/01\/image4-300x300.png 300w, https:\/\/liora.io\/app\/uploads\/sites\/7\/2025\/01\/image4-150x150.png 150w\" style=\"width:100%;max-width:512px;height:auto\" width=\"512\"\/><\/figure>\n\n\n<p><strong>Simplicidad<\/strong>: Su sintaxis es simple, clara y f\u00e1cil de leer.<\/p>\n\n\n<p><strong>Ausencia de gen\u00e9ricos<\/strong>: Hasta hace poco, Go no ofrec\u00eda gen\u00e9ricos, lo que pod\u00eda hacer que algunas estructuras de datos fueran m\u00e1s complejas de manejar.<\/p>\n\n\n<p><strong>Altas performances<\/strong>: Go es un lenguaje compilado, lo que lo hace r\u00e1pido en la ejecuci\u00f3n, cercano al nivel de performance del C o C++.<\/p>\n\n\n<p><strong>Sintaxis rudimentaria<\/strong>: La simplicidad puede tener un costo. Por ejemplo, al lenguaje le faltan algunas abstracciones avanzadas que se encuentran en otros lenguajes.<\/p>\n\n\n<p><strong>Gesti\u00f3n de la concurrencia<\/strong>: Las goroutines son un mecanismo poderoso que permite la concurrencia de manera eficiente y simple.<\/p>\n\n\n<p><strong>Gesti\u00f3n de errores<\/strong>: El manejo de errores es deliberadamente extenso, lo que puede hacer que el c\u00f3digo Go sea m\u00e1s largo y m\u00e1s dif\u00edcil de leer.<\/p>\n\n\n<p><strong>Cross-compilation<\/strong>: Go permite compilar c\u00f3digo fuente para m\u00faltiples plataformas con gran facilidad.<\/p>\n\n\n<p><strong>Rico ecosistema de bibliotecas<\/strong>: Ofrece un ecosistema rico en bibliotecas y herramientas.<\/p>\n\n\n<div class=\"wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex is-content-justification-center wp-container-core-buttons-is-layout-5ee10de4\" style=\"margin-top:32px;margin-bottom:32px\"><div class=\"wp-block-button\"><a class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/liora.io\/en\/courses\/cloud-dev\/devops-engineer\">Conecta Desventajas con DevOps Engineer<\/a><\/div><\/div>\n\n\n<h2 class=\"wp-block-heading\" id=\"estructura-del-lenguaje\">Estructura del lenguaje<\/h2>\n\n\n<p>Go es un lenguaje relativamente cercano al C en t\u00e9rminos de sintaxis.<\/p>\n\n\n<h3 class=\"wp-block-heading\" id=\"los-paquetes\">Los paquetes<\/h3>\n\n\n<p>Un paquete (package) es una unidad de modularidad y distribuci\u00f3n. Cada archivo Go es parte de un paquete, y los paquetes permiten reutilizar c\u00f3digo de una manera estructurada.<\/p>\n\n\n<ul class=\"wp-block-list\">\n<li aria-level=\"1\"><strong>package main<\/strong>: Este paquete particular indica el punto de entrada de un programa ejecutable. Si desarrollas una aplicaci\u00f3n, esta debe incluir el paquete main.<\/li>\n<li aria-level=\"1\">Los otros paquetes pueden ser importados para proporcionar funcionalidades adicionales, como fmt para la gesti\u00f3n de entradas\/salidas.<\/li>\n<\/ul>\n\n\n<h3 class=\"wp-block-heading\" id=\"las-importaciones\">Las importaciones<\/h3>\n\n\n<p>Las importaciones en Go permiten utilizar paquetes externos o paquetes de la biblioteca est\u00e1ndar para enriquecer las funcionalidades de tu programa.<\/p>\n\n\n<p>Por ejemplo, el siguiente c\u00f3digo importa un paquete (<i>fmt<\/i>) de la biblioteca est\u00e1ndar:<\/p>\n\n\n<pre class=\"wp-block-code\"><code>\n\t\t\t\t\timport \"fmt\"\n\t\t\t\t<\/code><\/pre>\n\n\n<p>Las importaciones m\u00faltiples son posibles de la siguiente forma:<\/p>\n\n\n<pre class=\"wp-block-code\"><code>\n\t\t\t\t\timport (\n    \"fmt\"\n    \"time\"\n)\n\n\t\t\t\t<\/code><\/pre>\n\n\n<h3 class=\"wp-block-heading\" id=\"las-funciones\">Las funciones<\/h3>\n\n\n<p>Las funciones en Go son bloques de c\u00f3digo que realizan una tarea espec\u00edfica. La funci\u00f3n main es obligatoria ya que constituye el punto de inicio de todo programa Go.<\/p>\n\n\n<p>La siguiente funci\u00f3n, llamada <i>Hello<\/i> toma un nombre como par\u00e1metro y devuelve un saludo:<\/p>\n\n\n<pre class=\"wp-block-code\"><code>\n\t\t\t\t\tfunc hello(name string) string {\n    return \"Hello, \" + name\n}\n\t\t\t\t<\/code><\/pre>\n\n\n<h3 class=\"wp-block-heading\" id=\"las-variables\">Las variables<\/h3>\n\n\n<p>Las variables se declaran con la palabra clave <strong>var<\/strong>, pero tambi\u00e9n pueden ser definidas m\u00e1s sucintamente con el operador :<strong>=<\/strong> para una declaraci\u00f3n impl\u00edcita.<\/p>\n\n\n<p>El siguiente ejemplo muestra una primera variable declarada expl\u00edcitamente como una cadena de caracteres, y una segunda declarada impl\u00edcitamente como un entero.<\/p>\n\n\n<pre class=\"wp-block-code\"><code>\n\t\t\t\t\tvar message string = \"Hello World!\"\nnombre := 42\n\t\t\t\t<\/code><\/pre>\n\n\n<h3 class=\"wp-block-heading\" id=\"el-tipado\">El tipado<\/h3>\n\n\n<p>Go es un lenguaje con tipado est\u00e1tico: cada variable se determina al momento de la compilaci\u00f3n.<\/p>\n\n\n<h3 class=\"wp-block-heading\" id=\"el-control-de-flujo\">El control de flujo<\/h3>\n\n\n<p>En Go, el control de flujo incluye las instrucciones cl\u00e1sicas como <strong>if\u2026else, for<\/strong> y <strong>switch<\/strong>. Sin embargo, no posee un bucle <strong>while<\/strong>, aunque <strong>for<\/strong> puede ser usado de manera similar.<\/p>\n\n\n<p>Aqu\u00ed, el bucle imprime los n\u00fameros del 0 al 9:<\/p>\n\n\n<pre class=\"wp-block-code\"><code>\n\t\t\t\t\tfor i := 0; i &lt; 10; i++ {\n    fmt.Println(i)\n}\n\t\t\t\t<\/code><\/pre>\n\n\n<p>El bucle <i>if <\/i>siguiente muestra si el n\u00famero es par o impar:<\/p>\n\n\n<pre class=\"wp-block-code\"><code>\n\t\t\t\t\tnumber := 7\nif number%2 == 0 {\n    fmt.Println(\"The number is even\")\n} else {\n    fmt.Println(\"The number is odd\")\n}\n\t\t\t\t<\/code><\/pre>\n\n\n<p>La instrucci\u00f3n <i>switch<\/i> siguiente eval\u00faa el valor de la variable <i>day<\/i> y ejecuta el bloque correspondiente:<\/p>\n\n\n<pre class=\"wp-block-code\"><code>\n\t\t\t\t\tday := \"tuesday\"\nswitch day {\ncase \"monday\":\n    fmt.Println(\"Start of the week\")\ncase \"tuesday\":\n    fmt.Println(\"Second day of the week\")\ncase \"wednesday\":\n    fmt.Println(\"Middle of the week\")\ndefault:\n    fmt.Println(\"Day not specified\")\n}\n\t\t\t\t<\/code><\/pre>\n\n\n<h3 class=\"wp-block-heading\" id=\"estructura-de-datos\">Estructura de datos<\/h3>\n\n\n<p>Se pueden utilizar diversas estructuras de datos, como los arrays, los slices, los maps y los structs.<\/p>\n\n\n<ul class=\"wp-block-list\">\n<li>Los <strong>slices <\/strong>permiten manipular secuencias de datos de manera flexible:<\/li>\n<\/ul>\n\n\n<pre class=\"wp-block-code\"><code>\n\t\t\t\t\tnumbers := []int{1, 2, 3, 4, 5}\nfmt.Println(numbers)\n\t\t\t\t<\/code><\/pre>\n\n\n<ul class=\"wp-block-list\">\n<li>Los <strong>maps <\/strong>son una colecci\u00f3n de pares clave-valor, similar a los diccionarios en otros lenguajes:<\/li>\n<\/ul>\n\n\n<pre class=\"wp-block-code\"><code>\n\t\t\t\t\tcapitals := map[string]string{\"France\": \"Paris\", \"Italy\": \"Roma\"}\nfmt.Println(capitals[\"France\"])\n\t\t\t\t<\/code><\/pre>\n\n\n<div class=\"wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex is-content-justification-center wp-container-core-buttons-is-layout-5ee10de4\" style=\"margin-top:32px;margin-bottom:32px\"><div class=\"wp-block-button\"><a class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/liora.io\/en\/courses\/cloud-dev\/aws-solutions-architect\">Dominar el lenguaje Golang<\/a><\/div><\/div>\n\n\n<h3 class=\"wp-block-heading\" id=\"comandos-basicos\">Comandos b\u00e1sicos<\/h3>\n\n\n<p>Golang dispone de varios comandos b\u00e1sicos para facilitar la gesti\u00f3n y ejecuci\u00f3n del c\u00f3digo:<\/p>\n\n\n<ul class=\"wp-block-list\">\n<li aria-level=\"1\"><strong>go fmt<\/strong>: Formatea autom\u00e1ticamente el c\u00f3digo Go para hacerlo m\u00e1s legible.<\/li>\n<li aria-level=\"1\"><strong>go run<\/strong>: Compila y ejecuta el c\u00f3digo Go directamente.<\/li>\n<li aria-level=\"1\"><strong>go test<\/strong>: Proporciona un framework integrado para escribir y ejecutar pruebas unitarias.<\/li>\n<li><strong>go build<\/strong>: Compila el c\u00f3digo fuente para producir un ejecutable.<\/li>\n<\/ul>\n\n\n<pre class=\"wp-block-code\"><code>\n\t\t\t\t\tcapitals := map[string]string{\"France\": \"Paris\", \"Italy\": \"Roma\"}\nfmt.Println(capitals[\"France\"])\n\t\t\t\t<\/code><\/pre>\n\n\n<h2 class=\"wp-block-heading\" id=\"goroutine-y-concurrencia\">Goroutine y concurrencia<\/h2>\n\n\n<p>Una de las caracter\u00edsticas m\u00e1s poderosas de Go es su capacidad para gestionar la concurrencia a trav\u00e9s de las goroutines. Estas son funciones que se ejecutan de manera concurrente con el resto del programa. Para iniciar una goroutine, basta con anteponer la palabra clave <strong>go<\/strong> a una llamada de funci\u00f3n.<\/p>\n\n\n<p>Aqu\u00ed hay un ejemplo:<\/p>\n\n\n<pre class=\"wp-block-code\"><code>\n\t\t\t\t\tpackage main\nimport (\n    \"fmt\"\n    \"time\"\n)\nfunc worker(mytask string) {\n    for i := 0; i &lt; 3; i++ {\n        fmt.Printf(\"%s : iteration %dn\", mytask, i)\n        time.Sleep(500 * time.Millisecond)\n    }\n}\nfunc main() {\n    go worker(\"Task1\")\n    go worker(\"Task2\")\n    worker(\"Main task\")\n    \/\/ Waiting for goroutine to end\n    time.Sleep(2 * time.Second)\n}\n\t\t\t\t<\/code><\/pre>\n\n\n<p>Las goroutines <i>Task1<\/i> y <i>Task2<\/i> se ejecutan en paralelo con <i>Main task<\/i>.<\/p>\n\n\n<h2 class=\"wp-block-heading\" id=\"conclusion\">Conclusi\u00f3n<\/h2>\n\n\n<p><strong>Golang es un lenguaje poderoso<\/strong>. Su simplicidad, su gesti\u00f3n eficaz de la concurrencia a trav\u00e9s de las goroutines, y la calidad de sus herramientas y bibliotecas lo convierten en una opci\u00f3n atractiva para muchos proyectos modernos.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Golang, a menudo llamado simplemente Go, es un lenguaje de programaci\u00f3n de c\u00f3digo abierto dise\u00f1ado por Google y publicado en 2009. Creado por Robert Griesemer, Rob Pike y Ken Thompson, este lenguaje busca ofrecer una soluci\u00f3n r\u00e1pida, eficiente y f\u00e1cilmente mantenible para el desarrollo de software moderno, especialmente en sistemas distribuidos, la nube y las [&hellip;]<\/p>\n","protected":false},"author":74,"featured_media":177090,"comment_status":"open","ping_status":"open","sticky":false,"template":"elementor_theme","format":"standard","meta":{"_acf_changed":false,"editor_notices":[],"footnotes":""},"categories":[2439],"class_list":["post-177088","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-cloud-dev"],"acf":[],"_links":{"self":[{"href":"https:\/\/liora.io\/es\/wp-json\/wp\/v2\/posts\/177088","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/liora.io\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/liora.io\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/liora.io\/es\/wp-json\/wp\/v2\/users\/74"}],"replies":[{"embeddable":true,"href":"https:\/\/liora.io\/es\/wp-json\/wp\/v2\/comments?post=177088"}],"version-history":[{"count":5,"href":"https:\/\/liora.io\/es\/wp-json\/wp\/v2\/posts\/177088\/revisions"}],"predecessor-version":[{"id":185779,"href":"https:\/\/liora.io\/es\/wp-json\/wp\/v2\/posts\/177088\/revisions\/185779"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/liora.io\/es\/wp-json\/wp\/v2\/media\/177090"}],"wp:attachment":[{"href":"https:\/\/liora.io\/es\/wp-json\/wp\/v2\/media?parent=177088"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/liora.io\/es\/wp-json\/wp\/v2\/categories?post=177088"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}