<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/"
    xmlns:atom="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/" version="2.0">
    <channel>
        
        <title>
            <![CDATA[ Golang - freeCodeCamp.org ]]>
        </title>
        <description>
            <![CDATA[ Descubre miles de cursos de programación escritos por expertos. Aprende Desarrollo Web, Ciencia de Datos, DevOps, Seguridad y obtén asesoramiento profesional para desarrolladores. ]]>
        </description>
        <link>https://www.freecodecamp.org/espanol/news/</link>
        <image>
            <url>https://cdn.freecodecamp.org/universal/favicons/favicon.png</url>
            <title>
                <![CDATA[ Golang - freeCodeCamp.org ]]>
            </title>
            <link>https://www.freecodecamp.org/espanol/news/</link>
        </image>
        <generator>Eleventy</generator>
        <lastBuildDate>Mon, 11 May 2026 20:00:46 +0000</lastBuildDate>
        <atom:link href="https://www.freecodecamp.org/espanol/news/tag/golang/rss.xml" rel="self" type="application/rss+xml" />
        <ttl>60</ttl>
        
            <item>
                <title>
                    <![CDATA[ Aprende Go - Curso de Golang desde cero ]]>
                </title>
                <description>
                    <![CDATA[ Go es un lenguaje de programación poderoso cuya popularidad está creciendo rápidamente. Es fácil de aprender y te permite crear diversos tipos de aplicaciones. Si estás aprendiendo a programar o ya tienes experiencia con otros lenguajes de programación, Go es una excelente opción para ampliar tus habilidades. Acabamos de publicar ]]>
                </description>
                <link>https://www.freecodecamp.org/espanol/news/aprende-go-curso-de-golang-desde-cero/</link>
                <guid isPermaLink="false">665d19e18fa377041e4b430b</guid>
                
                    <category>
                        <![CDATA[ Golang ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Estefania Cassingena Navone ]]>
                </dc:creator>
                <pubDate>Wed, 05 Jun 2024 05:00:00 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/espanol/news/content/images/2024/06/Go-Thumbnail-1.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>Go es un lenguaje de programación poderoso cuya popularidad está creciendo rápidamente. Es fácil de aprender y te permite crear diversos tipos de aplicaciones. Si estás aprendiendo a programar o ya tienes experiencia con otros lenguajes de programación, Go es una excelente opción para ampliar tus habilidades.</p><p>Acabamos de publicar un curso en el <a href="https://www.youtube.com/freecodecampespanol">canal de YouTube en español de freeCodeCamp.org</a> que te enseñará los conceptos básicos de Go paso a paso. Comenzarás instalando y configurando Go y gradualmente aprenderás temas más avanzados, como tipos de datos, variables, condicionales, bucles, funciones, la biblioteca estándar de Go y mucho más.</p><p>El curso fue creado por Leonardo José Castillo Lacruz. Leonardo es desarrollador de software y creador de contenido a quien le encanta enseñar programación y compartir sus conocimientos.</p><p>Veamos una introducción general a Go y lo que aprenderás durante el curso.</p><h1 id="introducci-n-a-golang">Introducción a Golang </h1><p>El mundo del desarrollo de software está en constante evolución y es esencial escoger y aprender el lenguaje de programación adecuado. Go (también conocido como Golang) se ha convertido en una opción poderosa y versátil, ganando rápidamente popularidad por su combinación de simplicidad, eficiencia y escalabilidad.</p><p>Estas son algunas de las ventajas clave de Go:</p><ul><li>Es fácil de aprender y comprender gracias a su sintaxis sencilla.</li><li>Es muy rápido porque se compila previamente a <a href="https://go.dev/doc/faq">código de máquina nativo</a>.</li><li>Tiene herramientas poderosas para manejar tareas concurrentes.</li><li>Es un lenguaje de programación de código abierto apoyado por Google.</li><li>Tiene <a href="https://go.dev/solutions/use-cases">casos de uso</a> en diversas industrias, incluyendo servicios de redes y servicios en la nube, interfaces de línea de comandos, desarrollo web y operaciones de desarrollo e ingeniería de fiabilidad del sitio.</li></ul><p>¡Y más!</p><p>Go es un lenguaje de programación apto para principiantes, así que puedes aprenderlo si estás aprendiendo a programar o si ya tienes experiencia programando y usarlo para crear aplicaciones complejas.</p><p><strong>💡 Dato:</strong> Si tienes curiosidad, la mascota de Go es esta linda <a href="https://go.dev/blog/gopher">ardilla de tierra</a> que vemos a continuación. (Otra razón más para aprender y amar Go, ¿cierto? 😁).</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1717376548147/76aa248f-d783-4850-9ada-faab2ae3d5de.png" class="kg-image" alt="76aa248f-d783-4850-9ada-faab2ae3d5de" width="500" height="500" loading="lazy"><figcaption>La mascota de Go, una ardilla de tierra (Gopher).</figcaption></figure><h2 id="curso-de-golang"><strong>Curso de Golang</strong></h2><p>Excelente. Ahora que sabes más sobre Go, veamos lo que aprenderás durante el curso:</p><ul><li>Instalación y configuración de Go</li><li>Tipos de datos</li><li>Variables</li><li>Arrays</li><li>Mapas</li><li>Condicionales</li><li>Ciclos</li><li>Funciones</li><li>La biblioteca estándar de Go</li><li>Y más...</li></ul><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1717377370865/9778f9f5-6fa2-43f3-94dd-22b8e51504e3.png" class="kg-image" alt="9778f9f5-6fa2-43f3-94dd-22b8e51504e3" width="1920" height="1080" loading="lazy"><figcaption>Captura de pantalla del curso de Go creado por Leonardo.</figcaption></figure><p><strong>💡 Dato: </strong>El curso es ideal para principiantes. Si estás tomando tus primeros pasos con Go, este curso es para ti.</p><p>Te invitamos a ver el curso en el canal de YouTube de <a href="https://www.youtube.com/freecodecampespanol">freeCodeCamp.org en español</a>:</p><figure class="kg-card kg-embed-card" data-test-label="fitted">
        <div class="fluid-width-video-container">
          <div style="padding-top: 56.49999999999999%;" class="fluid-width-video-wrapper">
            <iframe width="200" height="113" src="https://www.youtube.com/embed/L_yYVEC8GZo?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen="" title="Aprende Go - Curso de Golang desde cero" name="fitvid0"></iframe>
          </div>
        </div>
      </figure><p>✍️ Curso creado por Leonardo José Castillo Lacruz.</p><ul><li>YouTube: <a href="https://www.youtube.com/leonardocastillo79" rel="noopener noreferrer nofollow">@LeonardoCastillo79</a></li><li>LinkedIn: <a href="https://www.linkedin.com/in/leonardo-castillo-4911571a/" rel="noopener noreferrer nofollow">Leonardo José Castillo Lacruz</a></li><li>Twitter: <a href="https://twitter.com/ljcl79" rel="noopener noreferrer nofollow">@ljcl79</a></li><li>GitHub: <a href="https://github.com/ljcl79" rel="noopener noreferrer nofollow">@ljcl79</a></li></ul> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Cómo realizar migraciones de base de datos usando go-migrate ]]>
                </title>
                <description>
                    <![CDATA[ Desde su introducción, el lenguaje de programación Go (también conocido como Golang) se ha convertido cada vez más popular. Es conocido por su simplicidad y rendimiento eficiente, similar a un lenguaje de bajo nivel como C++. Mientras se trabaja con una base de datos, la migración de esquema es una ]]>
                </description>
                <link>https://www.freecodecamp.org/espanol/news/como-realizar-migraciones-de-base-de-datos-usando-go-migrate/</link>
                <guid isPermaLink="false">664abddd26bf7b0404c5d846</guid>
                
                    <category>
                        <![CDATA[ go ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Golang ]]>
                    </category>
                
                    <category>
                        <![CDATA[ base de datos ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Elias Ezequiel Pereyra Gomez ]]>
                </dc:creator>
                <pubDate>Wed, 29 May 2024 18:26:14 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/espanol/news/content/images/2024/05/Blue-and-Pink-3D-Elements-Student-Part-Time-Graphic-Designer-Video-Resume-Talking-Presentation.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Artículo original:</strong> <a href="https://www.freecodecamp.org/news/database-migration-golang-migrate/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">How to Perform Database Migrations using Go Migrate</a>
      </p><p>Desde su introducción, el lenguaje de programación Go (también conocido como Golang) se ha convertido cada vez más popular. Es conocido por su simplicidad y rendimiento eficiente, similar a un lenguaje de bajo nivel como C++.</p><p>Mientras se trabaja con una base de datos, la migración de esquema es una de las tareas más importantes que los desarrolladores hacen a lo largo del ciclo de vida del proyecto. En este artículo, te explicaré qué es una migración de base de datos y cómo hacerlo usando <a href="https://github.com/golang-migrate/migrate">go-migrate</a>.</p><h2 id="-qu-es-una-migraci-n-de-base-de-datos"><strong>¿Qué<strong> </strong>e<strong>s </strong>una Migración de Base de Datos<strong>?</strong></strong></h2><p>Una migración de base de datos, también conocido como una migración de esquema, es un conjunto de cambios que serán hechos a una estructura de objetos dentro de una base de datos relacional.</p><p>Es una forma de realizar e implementar cambios incrementales a la estructura de datos de una forma controlada y programática. Estos cambios son frecuentemente reversibles, lo que significa que se pueden deshacer o retrotraerse si se requiere.</p><p>El proceso de migración ayuda en cambiar el esquema de la base de datos desde su estado actual a un nuevo estado deseado, ya sea que implique agregar tablas y columnas, remover elementos, separar campos, o cambiar tipos y restricciones.</p><p>Al manejar estos cambios de una forma programática, se vuelve más fácil de mantener la consistencia y la precisión en la base de datos, así también como mantener un registro del historial de modificaciones que se le hizo.</p><h2 id="configuraci-n-e-instalaci-n"><strong>Configuración<strong> </strong>e<strong> </strong>Instalación</strong></h2><p><a href="https://github.com/golang-migrate/migrate">migrate</a> es una herramienta CLI que puedes usar para ejecutar migraciones. Puedes instalarlo fácilmente en varios sistemas operativos tales como Linux, Mac y Windows usando gestores de paquetes como curl, brew, y scoop, respectivamente.</p><p>Para más información en cómo instalar y usar la herramienta, puedes referirte a la documentación oficial.</p><p>Para instalar la herramienta CLI de <strong>migrate</strong> usando <a href="https://scoop.sh/">scoop</a> en Windows, puedes seguir estos pasos:</p><pre><code class="language-bash">$ scoop install migrate</code></pre><p>Para instalar la herramienta CLI de <strong>migrate</strong> usando <strong><a href="https://curl.se/">curl</a></strong> en Linux, puedes seguir estos pasos:</p><pre><code class="language-bash">$ curl -L https://packagecloud.io/golang-migrate/migrate/gpgkey| apt-key add -
$ echo "deb https://packagecloud.io/golang-migrate/migrate/ubuntu/ $(lsb_release -sc) main" &gt; /etc/apt/sources.list.d/migrate.list
$ apt-get update
$ apt-get install -y migrate</code></pre><p>Para instalar la herramienta CLI de <strong>migrate</strong> usando <a href="https://brew.sh/es/">brew</a> en Mac, puedes seguir estos pasos:</p><pre><code class="language-bash">$ brew install golang-migrate</code></pre><h2 id="c-mo-crear-una-nueva-migraci-n"><strong>Cómo crear<strong> </strong>una nueva migración</strong></h2><p>Crear un directorio como <code>database/migration</code> para almacenar todos los archivos de migración.</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/01/image-263.png" class="kg-image" alt="image-263" width="600" height="400" loading="lazy"><figcaption>Estructura de archivos fuentes en el IDE GoLand</figcaption></figure><p>Luego, crea archivos de migración usando el siguiente comando:</p><pre><code class="language-bash">$ migrate create -ext sql -dir database/migration/ -seq init_mg</code></pre><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/01/image-267.png" class="kg-image" alt="image-267" width="600" height="400" loading="lazy"><figcaption>Salida de terminal mostrando mensaje de creación de migración exitoso</figcaption></figure><p>Usas <code>-seq</code> para generar una versión secuencial y <code>init_mg</code> es el nombre de la migración.</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/01/image-269.png" class="kg-image" alt="image-269" width="600" height="400" loading="lazy"><figcaption>Estructura de archivos fuentes en el IDE GoLand</figcaption></figure><p>Una migración típicamente consiste de dos archivos distintos, uno para mover la base de datos a un nuevo estado (denominado como "up") y otro para revertir los cambios hechos al estado previo (denominado como "down").</p><p>El archivo "up" se usa para implementar los cambios deseados a la base de datos, mientras que el archivo "down" se usa para deshacer esos cambios y volver a la base de datos a su estado previo.</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/01/Database-migration.jpg" class="kg-image" alt="Database-migration" width="600" height="400" loading="lazy"><figcaption>Flujo de migración de una base de datos</figcaption></figure><p>El formato de esos archivos para SQL son:</p><pre><code class="language-bash">{version}_{título}.down.sql
{version}_{título}.up.sql</code></pre><p>Cuando creas archivos de migración, estarán vacíos por defecto. Para implementar los cambios que quieres, necesitarás rellenarlos con las solicitudes SQL apropiadas.</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/01/image-282.png" class="kg-image" alt="image-282" width="600" height="400" loading="lazy"><figcaption>Solicitudes SQL para migración de datos</figcaption></figure><h3 id="c-mo-ejecutar-la-migraci-n-up"><strong>Cómo<strong> </strong>ejecutar la<strong> </strong>Migración<strong> Up</strong></strong></h3><p>Para ejecutar sentencias de SQL en los archivos de migración, la migración requiere de una conexión válida a una base de datos Postgres.</p><p>Para lograr esto, necesitarás proveer una cadena de conexión en el formato apropiado.</p><pre><code class="language-bash">$ migrate -path database/migration/ -database "postgresql://username:secretkey@localhost:5432/database_name?sslmode=disable" -verbose up</code></pre><p>Ahora, en tu terminal de Postgres, puedes verificar las nuevas tablas creadas usando los siguientes comandos:</p><pre><code class="language-bash">\d+

\d+ nombre_tabla DESCRIBE TABLE</code></pre><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/01/image-286.png" class="kg-image" alt="image-286" width="600" height="400" loading="lazy"><figcaption>Mostrando datos de tabla en Postgres</figcaption></figure><h3 id="c-mo-retrotraer-migraciones"><strong>Cómo<strong> </strong>retrotraer<strong> </strong>migraciones</strong></h3><p>Si quieres revertir la migración, puedes hacerlo usando la siguiente etiquta <code>down</code>:</p><pre><code class="language-bash">$ migrate -path database/migration/ -database "postgresql://username:secretkey@localhost:5432/database_name?sslmode=disable" -verbose down</code></pre><p>Eliminará la columna <code>email</code> de ambas tablas como se menciona en el archivo <code>000002_init_mg.up.sql</code>.</p><p>Ahora, verifiquemos la base de datos y veamos si <code>email</code> ha sido eliminado o no:</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2023/01/Screenshot_20230126_102731.png" class="kg-image" alt="Screenshot_20230126_102731" width="600" height="400" loading="lazy"><figcaption>Mostrando datos de tablas actualizados en Postgres</figcaption></figure><h3 id="c-mo-resolver-errores-de-migraci-n"><strong>Cómo resolver Errores de Migración</strong></h3><p>Si una migración contiene un error y se ejecuta, migrate evitará que cualquier migración se ejecute en la misma base de datos.</p><p>Un mensaje de error como <code>Dirty database version 1. Fix and force version</code> se mostrará, incluso después que se arregle el error de migración. Esto indica que la base de datos está "sucio" y necesita ser investigado.</p><p>Es necesario determinar si la migración fue aplicado parcialmente o no. Una vez que has determinado esto, la versión de la base de datos debería ser forzado a reflejar su estado verdadero usando el comando force.</p><pre><code class="language-bash">$ migrate -path database/migration/ -database "postgresql://username:secretkey@localhost:5432/database_name?sslmode=disable" force &lt;VERSION&gt;</code></pre><h3 id="c-mo-agregar-comandos-en-un-archivo-makefile"><strong>Cómo agregar<strong> </strong>comandos<strong> </strong>e<strong>n </strong>un archivo<strong> Makefile</strong></strong></h3><pre><code class="language-makefile">migration_up: migrate -path database/migration/ -database "postgresql://username:secretkey@localhost:5432/database_name?sslmode=disable" -verbose up

migration_down: migrate -path database/migration/ -database "postgresql://username:secretkey@localhost:5432/database_name?sslmode=disable" -verbose down

migration_fix: migrate -path database/migration/ -database "postgresql://username:secretkey@localhost:5432/database_name?sslmode=disable" force VERSION</code></pre><p>Ahora, puedes ejecutar <code>$ make migration_up</code> para 'up', <code>$ make migration_down</code> para 'down', y <code>$ make migration_fix</code> para arreglar el problema de migración.</p><p>Antes de ejecutar el makefile, asegúrate que el número correcto de la versión está incluido en el comando <code>migration_fix</code>.</p><h2 id="conclusi-n"><strong><strong>Conclusión</strong></strong></h2><p>Los sistemas de migración típicamente generan archivos que pueden ser compartidos entre desarrolladores y múltiples equipos. También pueden ser aplicados a múltiples bases de datos y mantenidos en control de versiones.</p><p>Mantener un registro de los cambios a la base de datos hace posible el poder rastrear el historial de modificaciones que se le hicieron. De esta forma, el esquema de la base de datos y el entendimiento de la aplicación de esa estructura pueden evolucionar juntos.</p><p>Eso concluye nuestra discusión en migración de base de datos. Espero que la información te haya resultado útil e informativo.</p><p>Si disfrutaste leer este artículo, por favor considera compartirlos con tus colegas y con tus amigos en las redes. Adicionalmente, por favor considera seguirme en <a href="https://twitter.com/RwiteshBera/">Twitter</a> para más actualizaciones sobre tecnología y programación. ¡Gracias por leer!</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Primeros pasos con GoLang ]]>
                </title>
                <description>
                    <![CDATA[ Empecemos por conocer qué es GoLang o simplemente "Go": > GoLang, también conocido como simplemente ‘Go’, es un lenguaje de programación creado por Rob Pike, Ken Thompson y Robert Griesemer en 2007, lanzado en 2009, que cuenta con el patrocinio de Google. Está diseñado para trabajar en soluciones que requieren ]]>
                </description>
                <link>https://www.freecodecamp.org/espanol/news/primeros-con-golang/</link>
                <guid isPermaLink="false">6593f14ce058cc03f9581595</guid>
                
                    <category>
                        <![CDATA[ Golang ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Leonardo José Castillo Lacruz ]]>
                </dc:creator>
                <pubDate>Mon, 15 Apr 2024 13:39:24 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/espanol/news/content/images/2024/04/Youtube-1.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>Empecemos por conocer qué es GoLang o simplemente "Go":</p><blockquote><em>GoLang, también conocido como simplemente ‘Go’, es un lenguaje de programación creado por Rob Pike, Ken Thompson y Robert Griesemer en 2007, lanzado en 2009, que cuenta con el patrocinio de Google. Está diseñado para trabajar en soluciones que requieren un alto rendimiento y escalabilidad, especialmente en el procesamiento de datos y las conexiones de red.</em></blockquote><h3 id="caracter-sticas-claves-de-go-">Características claves de Go:</h3><ol><li><strong>Compilado</strong>: Go se compila y genera código de máquina, lo que lo hace rápido y eficiente. Ya que nos evitamos el tiempo de interpretación de código que otros lenguajes como Javsscript o Python requieren.</li><li><strong>Tipado estático</strong>: Las variables deben declararse con un tipo específico, esto garantiza el orden y permite evitar problemas por inconsistencias a la hora de usar las variables.</li><li><strong>Programación concorrente/paralela nativa</strong>: Go tiene excelentes capacidades para manejar múltiples hilos de ejecución. Esto hace de Go eficiente y orientado a aplicaciones donde la cantidad de solicitudes sea alta.</li><li><strong>Garbage Collector Nativo</strong>: Go gestiona automáticamente la memoria, de esta manera nosotros no debemos preocuparnos por alocar o liberar la memoria como en otros lenguajes como C++.</li><li><strong>Simplista al extremo</strong>: Go elimina características complejas como clases y herencias, sobreescrituras de métodos, hasta el famoso try/catch fue removido, esto porque Go se enfoca en la velocidad y el perfomance, pero ojo es de igual forma podemos aplicar el paradigma de la programación orientada a objetos.</li></ol><h3 id="diferencias-entre-lenguajes-compilados-e-interpretados-">Diferencias entre lenguajes compilados e interpretados:</h3><ul><li><strong>Compilado</strong>: En Go, todas las instrucciones del código fuente se convierten en lenguaje de máquina antes de la ejecución. Esto proporciona mayor velocidad y por lo tanto mayor rendimiento.</li><li><strong>Interpretado</strong>: En lenguajes interpretados, como Python o JavaScript, el código se ejecuta línea por línea en tiempo real, lo cual puede tener una perdida de velocidad, pero también se gana la facilidad de realizar cambios. </li></ul><p>Recuerden no todo es ganancia o pérdida, aunque en el caso anterior me quedo con los lenguajes compilados.</p><h2 id="instalaci-n-del-ambiente">Instalación del ambiente</h2><p>Para trabajar con Go, debemos hacer lo que denominamos la instalación de la infraestructura de trabajo, que se reduce a tener el compilador disponible en nuestro computador.</p><p>Go, para recordar es un proyecto Open Source y multiplataforma, es decir lo podemos usar en Windows, Linux o Mac. &nbsp;Tenemos procesos de instalación para cada uno de los sistemas operativos, sólo debemos acceder al sitio web de Go (<a href="https://go.dev">https://go.dev</a>) y buscar el correspondiente a nuestro sistema operativo.</p><p>Veamos los pasos para cada uno de ellos:</p><ul><li>Windows. &nbsp;Siempre simple, es sólo hacer la descarga del programa de instalación y seguir el paso a paso de asistente hasta finalizar.</li><li>Linux. Lo instalamos vía línea de comandos, desde una terminal, ejecutando el comando:</li></ul><pre><code>sudo snap install go --classic</code></pre><ul><li>Mac. Es bajar el archivo .pkg y realizar el proceso de desempaquetado.</li></ul><p>Finalizado el proceso, podemos comprobar si todo está bien, ejecutando el comando:</p><pre><code>go version</code></pre><p>Este comando debe mostrar algo como esto:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/espanol/news/content/images/2024/04/image-1.png" class="kg-image" alt="image-1" width="341" height="74" loading="lazy"></figure><p>Al llegar a este punto, ya tenemos todo lo necesario para iniciar nuestro camino con Go.</p><h2 id="hola-mundo-en-go">Hola Mundo en Go</h2><p>Como siempre, cuando iniciamos en un lenguaje de programación, lo tradicional es que iniciemos con un primer programa, el cual llamamos "Hola Mundo', donde tenemos ese primer contacto y ya nos comenzamos a empoderar de la nueva herrramienta de desarrollo. </p><p>En el caso de Go, no será la excepción, empecemos con este "Hola Mundo", el cual sigue a continuación:</p><figure class="kg-card kg-code-card"><pre><code>package main

import "fmt"

func main() {
	// De esta forma comentamos el código
	fmt.Println("Hola Mundo!")
}
</code></pre><figcaption></figcaption></figure><p>Revisemos las líneas de código anteriores y destaquemos algunas características:</p><ul><li>Existe la importación de un paquete llamado <code>main</code>, el cual define la estructura de la aplicación, todo programa Go usa este paquete.</li><li>La función <code>main</code>, es el punto de inicial o de entrada de nuestra aplicación. A partir de allí desarrollamos nuestra aplicación.</li><li>Luego tenemos las importaciones, Go trabaja con paquetes, de entrada él tiene lo que se denomina la librería standard, que ya nos provee de una serie de funcionalidades interesantes (<a href="https://pkg.go.dev/std">https://pkg.go.dev/std</a>), en esta caso de esa librería, tomamos a "fmt" para realizar operaciones de escritura en la pantalla.</li></ul><p>Con ello ya tenemos nuestra primera aplicación Go ejecutandose!</p><figure class="kg-card kg-embed-card" data-test-label="fitted">
        <div class="fluid-width-video-container">
          <div style="padding-top: 56.49999999999999%;" class="fluid-width-video-wrapper">
            <iframe width="200" height="113" src="https://www.youtube.com/embed/D30UWujqftU?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen="" title="Primeros pasos con Go - Tutorial" name="fitvid0"></iframe>
          </div>
        </div>
      </figure><h2 id="tipos-de-datos-en-go">Tipos de Datos en Go</h2><p>En Go podemos manejar datos de los tipos primitivos, así como en cualquier lenguaje de programación, entremos en detalle:</p><h3 id="tipo-de-datos-n-mericos-enteros-">Tipo de datos númericos enteros:</h3><p>En el caso de los números enteros, en Go, podemos decir si vamos a manejar con signo positivo o negativo, o simplemente los positivos. Además tienen la particularidad, de definir el rango, de esta forma podemos ser óptimos y usar los recursos de memoria que realmente necesitamos.</p><p><strong>Enteros con signo</strong>:</p><ul><li><strong><code>int8</code></strong>: Puede almacenar valores desde -128 hasta 127. Esto se denominan enteros de 8 bits.</li><li><strong><code>int16</code></strong>: Almacena enteros con signo de 16 bits, con un rango de -32,768 a 32,767.</li><li><strong><code>int32</code></strong> (también conocido como <code>rune</code>): Utilizado para caracteres Unicode y tiene un rango de -2,147,483,648 a 2,147,483,647.</li><li><code><strong>int64</strong></code>: Maneja números enteros con signo de 64 bits, con un rango de -9,223,372,036,854,775,808 a 9,223,372,036,854,775,807.</li><li><strong><code>int</code></strong>: Su tamaño depende de la arquitectura subyacente (32 o 64 bits).</li></ul><p><strong>Enteros sin signo, o sólo valores positivos.</strong></p><ul><li><strong><code>uint8</code></strong> (también conocido como <code>byte</code>): Representa enteros sin signo de 8 bits, con valores entre 0 y 255.</li><li><code><strong>uint16</strong></code>: Números desde 0 a 65,535. Almacena enteros sin signo de 16 bits.</li><li><strong><code>uint32</code></strong>: Utilizado para números grandes sin signo, con un rango de 0 a 4,294,967,295.</li><li><strong><code>uint64</code></strong>: Almacena enteros sin signo de 64 bits, con un rango de 0 a 18,446,744,073,709,551,615.</li><li><strong><code>uint</code></strong>: Su tamaño también depende de la arquitectura (32 o 64 bits).</li></ul><h3 id="tipos-de-datos-n-meros-decimales-o-de-punto-flotante-">Tipos de datos números decimales o de punto flotante:</h3><p>En el caso de números decimales, no tenemos tanta variedad de tipos, sólo tenemos una diferencia y es por la arquitectura donde se ejecuta el programa (32 o 64 bits), pero vale la pena conocer sus características:</p><p><strong><code>float32</code></strong>:</p><ul><li>Representa números de punto flotante de <strong>32 bits</strong>.</li><li>Puede almacenar valores con precisión hasta <strong>7 dígitos decimales</strong>.</li><li>Es adecuado para cálculos donde la precisión no necesita ser extremadamente alta.</li></ul><p><strong><code>float64</code></strong>:</p><ul><li>Es el tipo de punto flotante más común en Go.</li><li>Utiliza <strong>64 bits</strong> para representar números de punto flotante.</li><li>Ofrece mayor precisión que <code>float32</code>, con capacidad para almacenar hasta <strong>15 dígitos decimales</strong>.</li></ul><p>Es común usar <code><strong>float64</strong></code><strong> </strong>por su mayor precisión a la hora de almacenar datos (15 decimales!) </p><h3 id="otros-tipos-de-datos-primitivos">Otros tipos de datos primitivos</h3><p>En Go, podemos manejar:</p><ul><li><code><strong>string</strong></code><strong>: </strong>Con este tipo de datos podemos almacenar cadenas alfanuméricas, para definir sus valores, basta usar comillas dobles ("") o comillas simples (''), el compilador las reconoce de igual forma.</li><li><strong><code>bool</code>: &nbsp;</strong>A partir de este tipo de dato podemos manejar valores lógicos: true o false, los cuales son muy útiles cuando manejamos condiciones.</li><li><code><strong>struct:</strong></code><strong> </strong>Este tipo de dato es muy útil, debido a que con el podemos definir datos personalizados. En Go no hay clases, pero con struct, es posible crear una suerte de interface o clase de sólo propiedades. De esta forma podemos una entidad con sus campos y manejarla de forma agrupada.</li></ul><h3 id="tipos-de-datos-compuestos">Tipos de datos compuestos</h3><p>En Go podemos los siguientes tipos de datos que son combinaciones o mezcla de tipos de datos primitivos:</p><ul><li>Arreglos: En un tipo de datos que representa una colección de elementos del mismo tipo. La longitud de un array es fija y se especifica al declararlo, a diferencia de otros lenguajes donde declaramos arreglos sin tamaño, en Go debemos indicar el tamaño al declararlo.</li></ul><p>Ejemplo:</p><pre><code>var miArray [5]int // Un array de 5 enteros</code></pre><p>En Go, no es posible mezclar los tipos de datos de los valores que son parte de un arreglo, como por ejemplo si podemos hacer en Javascript.</p><ul><li>Slices: Son arreglos sin tamaño, es decir, si hay posibilidad de definir arreglos sin tamaño pero Go, los denonima como slides. Varía un poco su forma de declararlos.</li></ul><p>Ejemplo:</p><pre><code>paises := []string{"Venezuela","Brasil","Chile"}</code></pre><ul><li>Mapas: Son un tipo de datos usado por excelencia, se definen como lista basada en el par: clave-valor, es decir cada valor está identificado por un índice personalizado (a diferencia de los arreglos que son identificado por un índice numérico secuencial).</li></ul><p>Algunas características de los maps:</p><ul><li>Las <strong>claves</strong> deben ser <strong>únicas</strong> y <strong>comparables</strong> (por ejemplo, strings, ints, etc.). </li><li>Los <strong>valores</strong> pueden ser de cualquier tipo y se define al declararlo. </li><li>Para declarar un <strong>mapa</strong>, utilizamos la sintaxis <code>map[TipoClave]TipoValor</code>.</li><li>Los mapas no siguen un orden, ni mantienen el orden de la declaración, hay que tener eso en cuenta.</li></ul><p>Ejemplo:</p><pre><code>miMapa := map[string]string{
   "clave1": "valor1",
   "clave2": "valor2",
   "clave3": "valor3",
}
</code></pre><p>Para agregar nuevos valores al mapa, basta apenas indicar la nueva clave y su valor como sigue:</p><pre><code>miMapa["clave4"] = "Valor4"</code></pre><p>Para borrar una de las propiedades del mapa usamos el método <code>delete</code>:</p><pre><code>delete(miMapa, "clave1")</code></pre><p>En el caso anterior estariamos borrando la clave <code>clave1</code> de <code>miMapa</code> .</p><p>Adicionalmente en Go, tenemos la posibilidad gestionar las variables, a nivel de memoria, este tipo de datos se denomina <strong>Punteros. </strong>En realidad los punteros no son variables sino referencias a variables, esto es especialmente útil para poder reutilizar espacios de memoria por ejemplo al usar parámetros (que por defecto hacen una copia y consumen nuevamente los recursos).declarar</p><p>Veamos como se usa un puntero sobre una variable numerica:</p><pre><code>package main

import "fmt"

func main() {
    var miVariable int = 10
    var miPuntero *int = &amp;miVariable

    fmt.Println("Valor de miVariable:", miVariable)
    fmt.Println("Valor de miPuntero (dirección de memoria):", miPuntero)
    fmt.Println("Valor apuntado por miPuntero:", *miPuntero)
}
</code></pre><p>Observa que si pedimos el valor del puntero, lo que vamos a obtener es la dirección de memoria de la caja o variable. Este tipo de datos es super útil cuando queremos tener control de la gestión de memoria.</p><h2 id="declaraci-n-de-variables-en-go">Declaración de variables en Go</h2><p>En Go tenemos 2 formas de declarar variables, veamos en detalle:</p><ul><li>Declaración formal:</li></ul><pre><code>var nombreVariable &lt;tipo de datos&gt;</code></pre><ul><li>Inferencia del tipo a partir del valor inicial:</li></ul><pre><code>var nombreVariable = &lt;Valor&gt;</code></pre><p>La variable toma el tipo de dato del valor indicado.</p><p>Adicionalmente tenemos una forma abreviada de declarar variables:</p><pre><code>nombreVariable := &lt;Valor&gt;</code></pre><p>De lo anterior, Go infiere de igual forma el tipo de dato a partir del valor indicado.</p><p>Puedes profundizar en el uso de los tipos de datos y declaración de variables en el siguiente video:</p><figure class="kg-card kg-embed-card" data-test-label="fitted">
        <div class="fluid-width-video-container">
          <div style="padding-top: 56.49999999999999%;" class="fluid-width-video-wrapper">
            <iframe width="200" height="113" src="https://www.youtube.com/embed/ZcFgnVfTuD8?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen="" title="Go (Golang): Tipos de Datos, Variables, Arreglos y Slices explicados!" name="fitvid1"></iframe>
          </div>
        </div>
      </figure><h2 id="condicionales-en-go">Condicionales en Go</h2><p>En Go, similar a otros lenguajes de programación, usamos las palabras reservadas <code>if</code>, <code>else</code>, <code>switch</code>, para poder evaluar expresiones y ejecutar código de forma condicional, es decir ejecutar código cuando se cumple o no cumple alguna condición. </p><p>Una característica interesante de Go, es que las condiciones no necesitan parentesis para ser evaluadas, a diferencia de otros lenguajes de programación donde es obligatorio encerrar entre paréntesis la condición, así sea simple.</p><p>Ejemplos:</p><ol><li>Condición simple.</li></ol><pre><code>package main

import (
	"fmt"
)

func main() {
	var userInput int
	fmt.Print("Ingresa un valor: ")
	fmt.Scan(&amp;userInput)

	if userInput &gt; 10 {
		fmt.Print("Valor ingresado mayor a 10: ")
	}
}</code></pre><p>2. Condicional evaluando cuando se cumple y cuando no se cumple la condición</p><pre><code>package main

import (
	"fmt"
)

func main() {
	var userInput int
	fmt.Print("Ingresa un valor: ")
	fmt.Scan(&amp;userInput)

	if userInput &gt; 10 {
		fmt.Print("Valor ingresado mayor a 10: ")
	} else {
		fmt.Print("Valor ingresado es menor o igual 10: ")
	}
}
</code></pre><p>3. Condicionales anidados, donde evaluamos múltiples condiciones:</p><pre><code>package main

import (
	"fmt"
)

func main() {
	var userInput int
	fmt.Print("Ingresa un valor: ")
	fmt.Scan(&amp;userInput)

	if userInput &gt; 10 {
		fmt.Print("Valor ingresado mayor a 10: ")
	} else if userInput &lt; 10 {
		fmt.Print("Valor ingresado es menor a 10: ")
	} else {
		fmt.Print("Valor ingresado es 10: ")
	}
}
</code></pre><p>Veamos ahora como funciona el comando <code>switch</code>, el cual nos permite de forma fácil evaluar múltiples condiciones, permitiendo ejecutar bloques de código. Sigue un ejemplo:</p><pre><code>package main

import (
	"fmt"
)

func main() {
	var fruta string

	fmt.Print("Ingresa un valor alfanumérico: ")
	fmt.Scan(&amp;fruta)

	switch fruta {
	case "manzana":
		fmt.Println("Has ingresado 'manzana'.")
	case "banana":
		fmt.Println("Has ingresado 'banana'.")
	case "pera":
		fmt.Println("Has ingresado 'pera'.")
	default:
		fmt.Println("No reconozco ese valor.")
	}
}
</code></pre><h2 id="lazos-en-go">Lazos en Go</h2><p>Es tarea cotidiana, dentro del desarrollo de software, que existan procesos o bloques de código que necesitamos ejecutar más de una vez, Go implementa las estructuras de repetición usando sólo la palabra reservada <code>for</code>.</p><p>La sintaxis general del for es la siguiente:</p><pre><code>for [Instrucción Inicial]; [Condición]; [Instrucción Posterior] {
    // Acción a realizar en cada iteración
}</code></pre><p>Veamos como implementamos algnos procesos de repetición:</p><ol><li>Repita para, donde definimos la cantidad de veces que el proceso se va a repetir. Por ejemplo queremos ejecutar la suma de los primeros 100 numeros. </li></ol><pre><code>package main

import "fmt"

func main() {
    sum := 0

    for i := 0; i &lt;= 100; i++ {
        if i%2 != 0 {
            sum += i
        }
    }

    fmt.Printf("La suma de los números impares entre 0 y 100 es: %d\n", sum)
}
</code></pre><p>Observa que se definen:</p><ul><li>Instrucción Inicial: Se asigna el valor 0 al contador.</li><li>Condición: Se verifica si ya llegamos al número 100.</li><li>Instrucción Posterior: Avanzamos al siguiente número.</li></ul><p>2. Ahora simulemos lo que en otros lenguajes conocemos como for-each, usando <code>for</code></p><pre><code>package main

import (
	"fmt"
)

func main() {

	var m map[string]string = map[string]string{
		"clave1": "valor1",
		"clave2": "valor2",
		"clave3": "valor3",
		"clave4": "valor4",
	}

	for k, v := range m {
		fmt.Println(k, v)
	}

}
</code></pre><p>3. Implementando un repita mientras usando <code>for</code>, en Go no tenemos while o do-while, pero podemos representar la acción de la siguiente forma:</p><pre><code>package main

import (
	"fmt"
	"strings"
)

func main() {
	var fruta string

	for {
		fmt.Print("Ingresa una fruta: ")
		fmt.Scan(&amp;fruta)

		// Convertimos la entrada a minúsculas para evitar problemas de capitalización
		fruta = strings.ToLower(fruta)

		if fruta == "naranja" {
			fmt.Println("¡Has ingresado una naranja! El bucle se detiene.")
			break
		} else {
			fmt.Println("No es una naranja. Inténtalo nuevamente.")
		}
	}
}
</code></pre><p>Observa que usamos el for sin otros parámetros:</p><pre><code>for {
}</code></pre><p>Mediante lo anterior generamos un bucle infinito y es nuestra responsabilidad a lo interno validar la condición de salida. Es este punto el que no define si es un repita mientras o un repita hasta, recordando que la diferencia entre ellos es que el repita mientras se puede o no ejecutar, pues la condición se debe evaluar al inicio del proceso y el repita hasta al menos se ejecuta una vez. El código anterior es un repita hasta si lo analizamos en detalle porque se lee la fruta al menos una vez, veamos como seria en forma de repita mientras.</p><pre><code>package main

import (
	"fmt"
	"strings"
)

func main() {
	fruta := "banana"

	for {

		if fruta == "naranja" {
			fmt.Println("¡Has ingresado una naranja! El bucle se detiene.")
			break
		} else {
			fmt.Println("No es una naranja. Inténtalo nuevamente.")
		}

		fmt.Print("Ingresa una fruta: ")
		fmt.Scan(&amp;fruta)

		// Convertimos la entrada a minúsculas para evitar problemas de capitalización
		fruta = strings.ToLower(fruta)

	}
}
</code></pre><figure class="kg-card kg-embed-card" data-test-label="fitted">
        <div class="fluid-width-video-container">
          <div style="padding-top: 56.49999999999999%;" class="fluid-width-video-wrapper">
            <iframe width="200" height="113" src="https://www.youtube.com/embed/QgQRm37CiS0?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen="" title="Explorando Go: Mapas, Condicionales y Bucles" name="fitvid2"></iframe>
          </div>
        </div>
      </figure><p><br>Go, es un lenguaje altamente demandado actualmente, usado por empresas de gran tamaño, así que es una herramienta super atractiva de aprender, para más contenidos puedes verificar mis perfiles en:</p><ul><li>Freecodecamp.org: <a href="https://www.freecodecamp.org/espanol/news/author/leonardo/">https://www.freecodecamp.org/espanol/news/author/leonardo/</a></li><li>Linkedin: <a href="https://www.linkedin.com/in/leonardo-castillo-4911571a/">https://www.linkedin.com/in/leonardo-castillo-4911571a/</a></li><li>Youtube: <a href="https://www.youtube.com/channel/UCBltbOgO-DUW_SVa2zSg3Yg"></a><a href="https://www.youtube.com/leonardocastillo79">https://www.youtube.com/channel/UCBltbOgO-DUW_SVa2zSg3Yg</a></li><li>Twitter: <a href="https://twitter.com/ljcl79">https://twitter.com/ljcl79</a></li></ul> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Cómo instalar Go en Arch Linux usando Pacman ]]>
                </title>
                <description>
                    <![CDATA[ La forma más fácil de instalar Go es utilizando el administrador de paquetes de Arch Linux (pacman). Basado en la filosofía de Arch Linux de proporcionar nuevas versiones de software de forma rápida, obtendrás la versión más reciente de Go. Antes de que puedas instalar el paquete de Go, tienes ]]>
                </description>
                <link>https://www.freecodecamp.org/espanol/news/como-instalar-go-en-arch-linux/</link>
                <guid isPermaLink="false">601eef0f62984e09f6085a9c</guid>
                
                    <category>
                        <![CDATA[ Golang ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Juan Sifontez ]]>
                </dc:creator>
                <pubDate>Tue, 13 Apr 2021 03:24:12 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/espanol/news/content/images/2021/04/pacman.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>La forma más fácil de instalar Go es utilizando el administrador de paquetes de Arch Linux (<code>pacman</code>). Basado en la filosofía de Arch Linux de proporcionar nuevas versiones de software de forma rápida, obtendrás la versión más reciente de Go.</p><p>Antes de que puedas instalar el paquete de Go, tienes que actualizar tu sistema y todos los paquetes que tienes instalados. Sin embargo, antes de realizar la actualización de tu sistema y los paquetes, recuerda consultar primero <a href="https://www.archlinux.org/">la página de inicio de Arch Linux</a>. Cualquier paso fuera de lo común que debas seguir para evitar que los paquetes se rompan estarán enumerados en una publicación allí.</p><p>Una vez confirmes que es seguro actualizar tu sistema, solamente ejecuta el siguiente comando:</p><pre><code class="language-sh">$ sudo pacman -Syu</code></pre><p>Recuerda que la bandera <code>-S</code> es usada para instalar un paquete o una lista de paquetes, la opción <code>y</code> actualiza la lista de todos los paquetes de Arch Linux, y la opción <code>u</code> actualiza todos los paquetes que están desactualizados.</p><p>Luego de que tu sistema esté completamente actualizado, instala Go con el siguiente comando.</p><pre><code class="language-sh">$ sudo pacman -S go</code></pre><h3 id="comprueba-la-instalaci-n-y-versi-n-de-go">Comprueba la instalación y versión de Go</h3><p>Para comprobar si Go fue instalado satisfactoriamente, ejecuta:</p><pre><code class="language-sh">$ go version
&gt; go version go1.13.8 linux/amd64</code></pre><p>Esto imprimirá la versión de Go instalada en la consola y, al mismo tiempo, se asegurará de que la instalación se realizó sin problemas.</p><h2 id="m-s-informaci-n-acerca-de-go-">Más información acerca de Go:</h2><p><a href="https://www.freecodecamp.org/news/go-golang-course/">Aprende Go en este curso de video gratuito</a></p><p><a href="https://www.freecodecamp.org/news/how-to-build-a-photo-feed-with-go-and-vue-js-9d7f7f39c1b4/">Cómo construir un espacio de fotos con Go y Vue.js</a></p><h2 id="m-s-informaci-n-acerca-de-arch-linux-"><strong>Más información acerca de Arch Linux:</strong></h2><p><a href="https://www.freecodecamp.org/news/installing-arch-linux-from-scratch-b595095ddd48/">Cómo instalar Arch Linux desde cero</a></p><h2 id="bono-c-mo-instalar-go-en-ubuntu-linux-mint-"><strong>Bono: Cómo instalar Go en Ubuntu / Linux Mint:</strong></h2><p>Utilizando el administrador de paquetes de Ubuntu (<code>apt</code>) es la manera más rápida de instalar Go. Mientras que <code>pacman</code> de Arch Linux está a la vanguardia, los paquetes instalados utilizando <code>apt</code> y sus variantes suelen estar varias versiones por detrás. </p><p>El beneficio de este enfoque es la estabilidad – no serás capaz de instalar la última y mejor versión de ningún paquete, sin embargo, puedes estar seguro de que tu sistema no se romperá.</p><p>Primero, actualiza tu sistema con los siguientes comando:</p><pre><code class="language-sh">$ sudo apt update
$ sudo apt upgrade</code></pre><p>Luego instala Go ejecutando:</p><pre><code class="language-sh">$ sudo apt install golang-go</code></pre><h3 id="comprueba-la-instalaci-n-y-versi-n-de-go-1">Comprueba la instalación y versión de Go</h3><p>Para comprobar si Go fue instalado satisfactoriamente, abre tu terminal y ejecuta el siguiente comando:</p><pre><code class="language-sh">$ go version</code></pre><p>Esto imprimirá la versión de Go instalada en la consola.</p><h2 id="bono-c-mo-instalar-go-en-macos-">Bono: Cómo instalar Go en macOS:</h2><h3 id="instalaci-n-de-go-en-mac-os-x-mediante-el-instalador-de-paquetes">Instalación de Go en Mac OS X mediante el instalador de paquetes</h3><p>Desde la <a href="https://golang.org/dl/">página de descarga de golang</a>, descarga el paquete de instalación (que termina en .pkg) y ejecútalo.</p><h3 id="comprueba-la-instalaci-n-y-versi-n-de-go-2">Comprueba la instalación y versión de Go</h3><p>Para verificar si Go se instaló satisfactoriamente, abre tu terminal y ejecuta:</p><pre><code class="language-sh">$ go version</code></pre><p>Esto imprimirá la versión de Go instalada en la consola.</p><h3 id="instalaci-n-de-go-en-mac-os-x-usando-tarball"><strong>Instalación de Go en Mac OS X usando tarball</strong></h3><p>Puedes obtener el enlace al archivo tarball de Mac OS en la sección <em>Estable</em> más reciente de la <a href="https://golang.org/dl/">página de descarga de golang</a>.</p><figure class="kg-card kg-image-card"><img src="https://raw.githubusercontent.com/AlexandroPerez/resources/master/img/mac_tarball.jpg" class="kg-image" alt="screenshot of golang's download page as of this writting, highliting link" title="Mac tarball link" width="1233" height="450" loading="lazy"></figure><h3 id="proceso-de-instalaci-n"><strong>Proceso de Instalación</strong></h3><p>En este proceso de instalación estaremos utilizando la versión estable más reciente al momento de escribir este artículo (Go 1.9.1). Para una versión más nueva o más antigua simplemente reemplaza el enlace del primer paso. Verifica en <a href="https://golang.org/dl/">página de descarga de golang</a> qué versiones están actualmente disponibles.</p><h2 id="instalando-go-1-9-1">Instalando Go 1.9.1</h2><pre><code class="language-text">$ curl -O https://storage.googleapis.com/golang/go1.9.1.darwin-amd64.tar.gz
$ sudo tar -C /usr/local -xzf go1.9.1.darwin-amd64.tar.gz
$ export PATH=$PATH:/usr/local/go/bin</code></pre><h3 id="comprueba-la-instalaci-n-y-versi-n-de-go-3">Comprueba la instalación y versión de Go</h3><p>Para comprobar si Go fue instalado satisfactoriamente, ejecuta el comando:</p><pre><code class="language-sh">$ go version</code></pre><p>Esto imprimirá la versión instalada de Go en la consola.</p><p>Traducido del artículo <strong><a href="https://www.freecodecamp.org/news/how-to-install-go-in-arch-linux-using-pacman/">How to Install Go in Arch Linux Using Pacman</a></strong></p> ]]>
                </content:encoded>
            </item>
        
    </channel>
</rss>
