{"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-02-06T09:53:59","modified_gmt":"2026-02-06T08:53:59","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":"<b>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.<\/b>\n\n<style><br \/>\n.elementor-widget-image{text-align:center}.elementor-widget-image a{display:inline-block}.elementor-widget-image a img[src$=\".svg\"]{width:48px}.elementor-widget-image img{vertical-align:middle;display:inline-block}<\/style>\n<figure>\n\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"617\" height=\"349\" src=\"https:\/\/liora.io\/app\/uploads\/sites\/7\/2025\/01\/createurs-golang.webp\" alt=\"\" loading=\"lazy\" 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\" sizes=\"(max-width: 617px) 100vw, 617px\"><figcaption>Los tres creadores de Go, de izquierda a derecha, Robert Griesemer, Rob Pike y Ken Thompson<\/figcaption><\/figure>\n\n<div class=\"wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex is-content-justification-center\"><div class=\"wp-block-button \"><a class=\"wp-block-button__link wp-element-button \" href=\"https:\/\/liora.io\/es\/nuestros-cursos-de-data\">M\u00e1s sobre Golang<\/a><\/div><\/div>\n\n\n<style><br \/>\n.elementor-heading-title{padding:0;margin:0;line-height:1}.elementor-widget-heading .elementor-heading-title[class*=elementor-size-]>a{color:inherit;font-size:inherit;line-height:inherit}.elementor-widget-heading .elementor-heading-title.elementor-size-small{font-size:15px}.elementor-widget-heading .elementor-heading-title.elementor-size-medium{font-size:19px}.elementor-widget-heading .elementor-heading-title.elementor-size-large{font-size:29px}.elementor-widget-heading .elementor-heading-title.elementor-size-xl{font-size:39px}.elementor-widget-heading .elementor-heading-title.elementor-size-xxl{font-size:59px}<\/style>\n<h3>\u00bfPara qu\u00e9 campos de aplicaci\u00f3n?<\/h3>\nEl lenguaje Go es de particular inter\u00e9s en diferentes campos, incluyendo espec\u00edficamente:\n<ul>\n \t<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Sistemas en la nube y distribuidos<\/b>: Go es frecuentemente utilizado en entornos de cloud computing donde es especialmente valorado para aplicaciones en la nube nativa y microservicios.<\/li>\n \t<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Infraestructuras de back-end<\/b>: 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 \t<li><b>Servicios web<\/b>: Muchas empresas lo utilizan para desarrollar programas Go que son confiables y escalables, como Docker o Kubernetes.<\/li>\n<\/ul>\n<h3>Ventajas y desventajas<\/h3>\nGolang presenta numerosas ventajas, pero tambi\u00e9n tiene desventajas que es importante considerar.\n<h4>Ventajas<\/h4>\n<img decoding=\"async\" width=\"512\" height=\"512\" src=\"https:\/\/liora.io\/app\/uploads\/sites\/7\/2025\/01\/image1.png\" alt=\"\" loading=\"lazy\" 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\" sizes=\"(max-width: 512px) 100vw, 512px\">\n<h4>Desventajas<\/h4>\n<img decoding=\"async\" width=\"512\" height=\"512\" src=\"https:\/\/liora.io\/app\/uploads\/sites\/7\/2025\/01\/image4.png\" alt=\"\" loading=\"lazy\" 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\" sizes=\"(max-width: 512px) 100vw, 512px\">\n\n<b>Simplicidad<\/b>: Su sintaxis es simple, clara y f\u00e1cil de leer.\n\n<b>Ausencia de gen\u00e9ricos<\/b>: 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.\n\n<b>Altas performances<\/b>: Go es un lenguaje compilado, lo que lo hace r\u00e1pido en la ejecuci\u00f3n, cercano al nivel de performance del C o C++.\n\n<b>Sintaxis rudimentaria<\/b>: La simplicidad puede tener un costo. Por ejemplo, al lenguaje le faltan algunas abstracciones avanzadas que se encuentran en otros lenguajes.\n\n<b>Gesti\u00f3n de la concurrencia<\/b>: Las goroutines son un mecanismo poderoso que permite la concurrencia de manera eficiente y simple.\n\n<b>Gesti\u00f3n de errores<\/b>: 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.\n\n<b>Cross-compilation<\/b>: Go permite compilar c\u00f3digo fuente para m\u00faltiples plataformas con gran facilidad.\n\n<b>Rico ecosistema de bibliotecas<\/b>: Ofrece un ecosistema rico en bibliotecas y herramientas.\n\n<a href=\"https:\/\/liora.io\/es\/nuestros-cursos-de-data\">\nFormaci\u00f3n en Golang\n<\/a>\n<h3>Estructura del lenguaje<\/h3>\nGo es un lenguaje relativamente cercano al C en t\u00e9rminos de sintaxis.\n<h4><font size=\"4\">Los paquetes<\/font><\/h4>\nUn 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.\n<ul>\n \t<li style=\"font-weight: 400;\" aria-level=\"1\"><b>package main<\/b>: 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 \t<li style=\"font-weight: 400;\" 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<h4><font size=\"4\">Las importaciones<\/font><\/h4>\nLas importaciones en Go permiten utilizar paquetes externos o paquetes de la biblioteca est\u00e1ndar para enriquecer las funcionalidades de tu programa.\n\nPor ejemplo, el siguiente c\u00f3digo importa un paquete (<i>fmt<\/i>) de la biblioteca est\u00e1ndar:\n<pre data-line=\"\">\t\t\t\t<code readonly=\"true\">\n\t\t\t\t\t<xmp>import \"fmt\"<\/xmp>\n\t\t\t\t<\/code>\n<\/pre>\nLas importaciones m\u00faltiples son posibles de la siguiente forma:\n<pre data-line=\"\">\t\t\t\t<code readonly=\"true\">\n\t\t\t\t\t<xmp>import (\n    \"fmt\"\n    \"time\"\n)\n<\/xmp>\n\t\t\t\t<\/code>\n<\/pre>\n<h4><font size=\"4\">Las funciones<\/font><\/h4>\nLas 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.\n\nLa siguiente funci\u00f3n, llamada <i>Hello<\/i> toma un nombre como par\u00e1metro y devuelve un saludo:\n<pre data-line=\"\">\t\t\t\t<code readonly=\"true\">\n\t\t\t\t\t<xmp>func hello(name string) string {\n    return \"Hello, \" + name\n}<\/xmp>\n\t\t\t\t<\/code>\n<\/pre>\n<h4><font size=\"4\">Las variables<\/font><\/h4>\nLas variables se declaran con la palabra clave <b>var<\/b>, pero tambi\u00e9n pueden ser definidas m\u00e1s sucintamente con el operador :<b>=<\/b> para una declaraci\u00f3n impl\u00edcita.\n\nEl siguiente ejemplo muestra una primera variable declarada expl\u00edcitamente como una cadena de caracteres, y una segunda declarada impl\u00edcitamente como un entero.\n<pre data-line=\"\">\t\t\t\t<code readonly=\"true\">\n\t\t\t\t\t<xmp>var message string = \"Hello World!\"\nnombre := 42<\/xmp>\n\t\t\t\t<\/code>\n<\/pre>\n\n<div class=\"wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex is-content-justification-center\"><div class=\"wp-block-button \"><a class=\"wp-block-button__link wp-element-button \" href=\"https:\/\/liora.io\/es\/nuestros-cursos-de-data\">Saber m\u00e1s sobre Golang<\/a><\/div><\/div>\n\n<h4><font size=\"4\">El tipado<\/font><\/h4>\nGo es un lenguaje con tipado est\u00e1tico: cada variable se determina al momento de la compilaci\u00f3n.\n<h4><font size=\"4\">El control de flujo<\/font><\/h4>\nEn Go, el control de flujo incluye las instrucciones cl\u00e1sicas como <b>if\u2026else, for<\/b> y <b>switch<\/b>. Sin embargo, no posee un bucle <b>while<\/b>, aunque <b>for<\/b> puede ser usado de manera similar.\n\nAqu\u00ed, el bucle imprime los n\u00fameros del 0 al 9:\n<pre data-line=\"\">\t\t\t\t<code readonly=\"true\">\n\t\t\t\t\t<xmp>for i := 0; i < 10; i++ {\n    fmt.Println(i)\n}<\/xmp>\n\t\t\t\t<\/code>\n<\/pre>\nEl bucle <i>if <\/i>siguiente muestra si el n\u00famero es par o impar:\n<pre data-line=\"\">\t\t\t\t<code readonly=\"true\">\n\t\t\t\t\t<xmp>number := 7\nif number%2 == 0 {\n    fmt.Println(\"The number is even\")\n} else {\n    fmt.Println(\"The number is odd\")\n}<\/xmp>\n\t\t\t\t<\/code>\n<\/pre>\nLa instrucci\u00f3n <i>switch<\/i> siguiente eval\u00faa el valor de la variable <i>day<\/i> y ejecuta el bloque correspondiente:\n<pre data-line=\"\">\t\t\t\t<code readonly=\"true\">\n\t\t\t\t\t<xmp>day := \"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}<\/xmp>\n\t\t\t\t<\/code>\n<\/pre>\n<h4><font size=\"4\">Estructura de datos<\/font><\/h4>\nSe pueden utilizar diversas estructuras de datos, como los arrays, los slices, los maps y los structs.\n<ul>\n \t<li>Los <b>slices <\/b>permiten manipular secuencias de datos de manera flexible:<\/li>\n<\/ul>\n<pre data-line=\"\">\t\t\t\t<code readonly=\"true\">\n\t\t\t\t\t<xmp>numbers := []int{1, 2, 3, 4, 5}\nfmt.Println(numbers)<\/xmp>\n\t\t\t\t<\/code>\n<\/pre>\n<ul>\n \t<li>Los <b>maps <\/b>son una colecci\u00f3n de pares clave-valor, similar a los diccionarios en otros lenguajes:<\/li>\n<\/ul>\n<pre data-line=\"\">\t\t\t\t<code readonly=\"true\">\n\t\t\t\t\t<xmp>capitals := map[string]string{\"France\": \"Paris\", \"Italy\": \"Roma\"}\nfmt.Println(capitals[\"France\"])<\/xmp>\n\t\t\t\t<\/code>\n<\/pre>\n\n<div class=\"wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex is-content-justification-center\"><div class=\"wp-block-button \"><a class=\"wp-block-button__link wp-element-button \" href=\"https:\/\/liora.io\/es\/nuestros-cursos-de-data\">Dominar el lenguaje Golang<\/a><\/div><\/div>\n\n<h4><font size=\"4\">Comandos b\u00e1sicos<\/font><\/h4>\nGolang dispone de varios comandos b\u00e1sicos para facilitar la gesti\u00f3n y ejecuci\u00f3n del c\u00f3digo:\n<ul>\n \t<li style=\"font-weight: 400;\" aria-level=\"1\"><b>go fmt<\/b>: Formatea autom\u00e1ticamente el c\u00f3digo Go para hacerlo m\u00e1s legible.<\/li>\n \t<li style=\"font-weight: 400;\" aria-level=\"1\"><b>go run<\/b>: Compila y ejecuta el c\u00f3digo Go directamente.<\/li>\n \t<li style=\"font-weight: 400;\" aria-level=\"1\"><b>go test<\/b>: Proporciona un framework integrado para escribir y ejecutar pruebas unitarias.<\/li>\n \t<li><b>go build<\/b>: Compila el c\u00f3digo fuente para producir un ejecutable.<\/li>\n<\/ul>\n<pre data-line=\"\">\t\t\t\t<code readonly=\"true\">\n\t\t\t\t\t<xmp>capitals := map[string]string{\"France\": \"Paris\", \"Italy\": \"Roma\"}\nfmt.Println(capitals[\"France\"])<\/xmp>\n\t\t\t\t<\/code>\n<\/pre>\n<h3>Goroutine y concurrencia<\/h3>\nUna 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 <b>go<\/b> a una llamada de funci\u00f3n.\n\nAqu\u00ed hay un ejemplo:\n<pre data-line=\"\">\t\t\t\t<code readonly=\"true\">\n\t\t\t\t\t<xmp>package main\nimport (\n    \"fmt\"\n    \"time\"\n)\nfunc worker(mytask string) {\n    for i := 0; i < 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}<\/xmp>\n\t\t\t\t<\/code>\n<\/pre>\nLas goroutines <i>Task1<\/i> y <i>Task2<\/i> se ejecutan en paralelo con <i>Main task<\/i>.\n<h3>Conclusi\u00f3n<\/h3>\n<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.&nbsp;\n\n<a href=\"https:\/\/liora.io\/es\/nuestros-cursos-de-data\">\nDescubra nuestra formaci\u00f3n\n<\/a>","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":183299,"href":"https:\/\/liora.io\/es\/wp-json\/wp\/v2\/posts\/177088\/revisions\/183299"}],"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}]}}