{"componentChunkName":"component---src-templates-post-template-js","path":"/posts/crud-en-memoria-go/","result":{"data":{"markdownRemark":{"id":"f8a7d552-94e2-5e4d-8f98-4cdc8a50ea53","html":"<p>Recientemente he estado trasteando con el lenguaje Go, y como siempre he dicho: la mejor manera de aprender es haciendo, por lo cual he realizado un pequeño proyecto de consola para poder practicar. El código final del proyecto lo puedes encontrar en <a href=\"https://github.com/darwinsalinas/crud-memoria\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">este enlace</a>.</p>\n<p>Si ya has programado en Go con anterioridad debes saber que en Go no existen las clases, y si vienes de un lenguaje de programación completamente orientado a objetos lo primero que buscar es como programar una clase que represente tu modelo de datos.</p>\n<p>Entonces, si en Go no existen las clases; como se hace para representar tu modelo de datos?, bueno pues en Go puedes crear nuevos tipos de datos muy facilmente con algo llamado <code class=\"language-text\">struct</code>, una vez creado el nuevo tipo de datos se pueden crear nuevas ‘instancias’ de estos tipos de datos y asignarlos a las variables al igual que como hacemos cuando instanciamos una clase, a continuacion de muestro el tipo de datos que he creado para el CRUD que he programado:</p>\n<div class=\"gatsby-highlight\" data-language=\"go\"><pre class=\"language-go\"><code class=\"language-go\"><span class=\"token keyword\">package</span> models\n\n<span class=\"token comment\">// Usuario represent the user model</span>\n<span class=\"token keyword\">type</span> Usuario <span class=\"token keyword\">struct</span> <span class=\"token punctuation\">{</span>\n\tID       <span class=\"token builtin\">int</span>\n\tNombre   <span class=\"token builtin\">string</span>\n\tApellido <span class=\"token builtin\">string</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<p>Luego de crear este paquete llamado <code class=\"language-text\">models</code> también he creado el paquete <code class=\"language-text\">controllers</code> para poder programar las acciones del CRUD y separar un poco la lógica que hace render de la interfaz de usuario:</p>\n<p>En este paquete he escrito dos archivos uno para el menu y otro para las acciones CRUD\nMenuController:</p>\n<div class=\"gatsby-highlight\" data-language=\"go\"><pre class=\"language-go\"><code class=\"language-go\"><span class=\"token keyword\">package</span> controllers\n\n<span class=\"token keyword\">import</span> <span class=\"token punctuation\">(</span>\n\t<span class=\"token string\">\"fmt\"</span>\n\t<span class=\"token string\">\"strings\"</span>\n<span class=\"token punctuation\">)</span>\n\n<span class=\"token comment\">// PrintMenu imprime el menu en pantalla</span>\n<span class=\"token keyword\">func</span> <span class=\"token function\">PrintMenu</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n\tfmt<span class=\"token punctuation\">.</span><span class=\"token function\">Println</span><span class=\"token punctuation\">(</span>strings<span class=\"token punctuation\">.</span><span class=\"token function\">ToUpper</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"1- Lista de usuarios\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\n\tfmt<span class=\"token punctuation\">.</span><span class=\"token function\">Println</span><span class=\"token punctuation\">(</span>strings<span class=\"token punctuation\">.</span><span class=\"token function\">ToUpper</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"2- Ver un usuario\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\n\tfmt<span class=\"token punctuation\">.</span><span class=\"token function\">Println</span><span class=\"token punctuation\">(</span>strings<span class=\"token punctuation\">.</span><span class=\"token function\">ToUpper</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"3- Crear usuario\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\n\tfmt<span class=\"token punctuation\">.</span><span class=\"token function\">Println</span><span class=\"token punctuation\">(</span>strings<span class=\"token punctuation\">.</span><span class=\"token function\">ToUpper</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"4- Actualizar usuario\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\n\tfmt<span class=\"token punctuation\">.</span><span class=\"token function\">Println</span><span class=\"token punctuation\">(</span>strings<span class=\"token punctuation\">.</span><span class=\"token function\">ToUpper</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"5- Salir del programa\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\n\t<span class=\"token function\">doTask</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\n<span class=\"token punctuation\">}</span>\n\n<span class=\"token keyword\">func</span> <span class=\"token function\">doTask</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n\t<span class=\"token keyword\">var</span> opcion <span class=\"token builtin\">string</span>\n\tfmt<span class=\"token punctuation\">.</span><span class=\"token function\">Scanln</span><span class=\"token punctuation\">(</span><span class=\"token operator\">&amp;</span>opcion<span class=\"token punctuation\">)</span>\n\n\t<span class=\"token keyword\">switch</span> opcion <span class=\"token punctuation\">{</span>\n\t<span class=\"token keyword\">case</span> <span class=\"token string\">\"1\"</span><span class=\"token punctuation\">:</span>\n\t\t<span class=\"token function\">listUsers</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\n\t\t<span class=\"token function\">PrintMenu</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\n\t<span class=\"token keyword\">case</span> <span class=\"token string\">\"2\"</span><span class=\"token punctuation\">:</span>\n\t\t<span class=\"token function\">getUserByIndex</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\n\t\t<span class=\"token function\">PrintMenu</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\n\n\t<span class=\"token keyword\">case</span> <span class=\"token string\">\"3\"</span><span class=\"token punctuation\">:</span>\n\t\t<span class=\"token function\">createUser</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\n\t\t<span class=\"token function\">PrintMenu</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\n\t<span class=\"token keyword\">case</span> <span class=\"token string\">\"4\"</span><span class=\"token punctuation\">:</span>\n\t\t<span class=\"token function\">updateUser</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\n\t\t<span class=\"token function\">PrintMenu</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\n\t<span class=\"token keyword\">case</span> <span class=\"token string\">\"5\"</span><span class=\"token punctuation\">:</span>\n\t\t<span class=\"token keyword\">break</span>\n\t<span class=\"token keyword\">default</span><span class=\"token punctuation\">:</span>\n\t\tfmt<span class=\"token punctuation\">.</span><span class=\"token function\">Println</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Selecciona una opcion de la lista\"</span><span class=\"token punctuation\">)</span>\n\t\t<span class=\"token function\">PrintMenu</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\n\t<span class=\"token punctuation\">}</span>\n<span class=\"token punctuation\">}</span>\n\n<span class=\"token comment\">// PrintHeader imprime la cabecera del programa</span>\n<span class=\"token keyword\">func</span> <span class=\"token function\">PrintHeader</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n\tdecorador <span class=\"token operator\">:=</span> <span class=\"token string\">\"*\"</span>\n\ttitulo <span class=\"token operator\">:=</span> <span class=\"token string\">\"* crud de usuario en memoria *\"</span>\n\tfmt<span class=\"token punctuation\">.</span><span class=\"token function\">Println</span><span class=\"token punctuation\">(</span>strings<span class=\"token punctuation\">.</span><span class=\"token function\">Repeat</span><span class=\"token punctuation\">(</span>decorador<span class=\"token punctuation\">,</span> <span class=\"token function\">len</span><span class=\"token punctuation\">(</span>titulo<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\n\tfmt<span class=\"token punctuation\">.</span><span class=\"token function\">Println</span><span class=\"token punctuation\">(</span>strings<span class=\"token punctuation\">.</span><span class=\"token function\">ToUpper</span><span class=\"token punctuation\">(</span>titulo<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\n\tfmt<span class=\"token punctuation\">.</span><span class=\"token function\">Println</span><span class=\"token punctuation\">(</span>strings<span class=\"token punctuation\">.</span><span class=\"token function\">Repeat</span><span class=\"token punctuation\">(</span>decorador<span class=\"token punctuation\">,</span> <span class=\"token function\">len</span><span class=\"token punctuation\">(</span>titulo<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<p>MainController:</p>\n<div class=\"gatsby-highlight\" data-language=\"go\"><pre class=\"language-go\"><code class=\"language-go\"><span class=\"token keyword\">package</span> controllers\n\n<span class=\"token keyword\">import</span> <span class=\"token punctuation\">(</span>\n\t<span class=\"token string\">\"crud-memoria/models\"</span>\n\t<span class=\"token string\">\"fmt\"</span>\n\t<span class=\"token string\">\"strconv\"</span>\n\t<span class=\"token string\">\"strings\"</span>\n\n\t<span class=\"token string\">\"syreclabs.com/go/faker\"</span>\n<span class=\"token punctuation\">)</span>\n\n<span class=\"token keyword\">var</span> usuarios <span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span>models<span class=\"token punctuation\">.</span>Usuario\n\n<span class=\"token keyword\">func</span> <span class=\"token function\">listUsers</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n\t<span class=\"token keyword\">for</span> <span class=\"token boolean\">_</span><span class=\"token punctuation\">,</span> item <span class=\"token operator\">:=</span> <span class=\"token keyword\">range</span> usuarios <span class=\"token punctuation\">{</span>\n\t\tfmt<span class=\"token punctuation\">.</span><span class=\"token function\">Println</span><span class=\"token punctuation\">(</span>item<span class=\"token punctuation\">.</span>ID<span class=\"token punctuation\">,</span> item<span class=\"token punctuation\">.</span>Nombre<span class=\"token punctuation\">,</span> item<span class=\"token punctuation\">.</span>Apellido<span class=\"token punctuation\">)</span>\n\t<span class=\"token punctuation\">}</span>\n<span class=\"token punctuation\">}</span>\n\n<span class=\"token keyword\">func</span> <span class=\"token function\">getUserByIndex</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">(</span>models<span class=\"token punctuation\">.</span>Usuario<span class=\"token punctuation\">,</span> <span class=\"token builtin\">int</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n\t<span class=\"token keyword\">var</span> index <span class=\"token builtin\">string</span>\n\tfmt<span class=\"token punctuation\">.</span><span class=\"token function\">Scanln</span><span class=\"token punctuation\">(</span><span class=\"token operator\">&amp;</span>index<span class=\"token punctuation\">)</span>\n\ti<span class=\"token punctuation\">,</span> <span class=\"token boolean\">_</span> <span class=\"token operator\">:=</span> strconv<span class=\"token punctuation\">.</span><span class=\"token function\">Atoi</span><span class=\"token punctuation\">(</span>index<span class=\"token punctuation\">)</span>\n\t<span class=\"token keyword\">if</span> i <span class=\"token operator\">></span> <span class=\"token function\">len</span><span class=\"token punctuation\">(</span>usuarios<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n\t\tfmt<span class=\"token punctuation\">.</span><span class=\"token function\">Println</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"El usuario no existe\"</span><span class=\"token punctuation\">)</span>\n\t\t<span class=\"token keyword\">return</span> models<span class=\"token punctuation\">.</span>Usuario<span class=\"token punctuation\">{</span><span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span> i\n\t<span class=\"token punctuation\">}</span>\n\tusuario <span class=\"token operator\">:=</span> usuarios<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span>\n\n\tdecorador <span class=\"token operator\">:=</span> <span class=\"token string\">\"*\"</span>\n\ttitulo <span class=\"token operator\">:=</span> <span class=\"token string\">\"* Usuario del indice \"</span> <span class=\"token operator\">+</span> index <span class=\"token operator\">+</span> <span class=\"token string\">\" *\"</span>\n\tfmt<span class=\"token punctuation\">.</span><span class=\"token function\">Println</span><span class=\"token punctuation\">(</span>strings<span class=\"token punctuation\">.</span><span class=\"token function\">Repeat</span><span class=\"token punctuation\">(</span>decorador<span class=\"token punctuation\">,</span> <span class=\"token function\">len</span><span class=\"token punctuation\">(</span>titulo<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\n\tfmt<span class=\"token punctuation\">.</span><span class=\"token function\">Println</span><span class=\"token punctuation\">(</span>strings<span class=\"token punctuation\">.</span><span class=\"token function\">ToUpper</span><span class=\"token punctuation\">(</span>titulo<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\n\tfmt<span class=\"token punctuation\">.</span><span class=\"token function\">Println</span><span class=\"token punctuation\">(</span>strings<span class=\"token punctuation\">.</span><span class=\"token function\">Repeat</span><span class=\"token punctuation\">(</span>decorador<span class=\"token punctuation\">,</span> <span class=\"token function\">len</span><span class=\"token punctuation\">(</span>titulo<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\n\tfmt<span class=\"token punctuation\">.</span><span class=\"token function\">Println</span><span class=\"token punctuation\">(</span>usuario<span class=\"token punctuation\">.</span>ID<span class=\"token punctuation\">,</span> usuario<span class=\"token punctuation\">.</span>Nombre<span class=\"token punctuation\">,</span> usuario<span class=\"token punctuation\">.</span>Apellido<span class=\"token punctuation\">)</span>\n\tfmt<span class=\"token punctuation\">.</span><span class=\"token function\">Println</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\n\tfmt<span class=\"token punctuation\">.</span><span class=\"token function\">Println</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\n\tfmt<span class=\"token punctuation\">.</span><span class=\"token function\">Println</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\n\t<span class=\"token keyword\">return</span> usuario<span class=\"token punctuation\">,</span> i\n\n<span class=\"token punctuation\">}</span>\n\n<span class=\"token keyword\">func</span> <span class=\"token function\">createUser</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n\t<span class=\"token keyword\">var</span> nombre<span class=\"token punctuation\">,</span> apellido <span class=\"token builtin\">string</span>\n\tfmt<span class=\"token punctuation\">.</span><span class=\"token function\">Println</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Escriba el nombre:\"</span><span class=\"token punctuation\">)</span>\n\tfmt<span class=\"token punctuation\">.</span><span class=\"token function\">Scanln</span><span class=\"token punctuation\">(</span><span class=\"token operator\">&amp;</span>nombre<span class=\"token punctuation\">)</span>\n\n\tfmt<span class=\"token punctuation\">.</span><span class=\"token function\">Println</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Escriba el apellido:\"</span><span class=\"token punctuation\">)</span>\n\tfmt<span class=\"token punctuation\">.</span><span class=\"token function\">Scanln</span><span class=\"token punctuation\">(</span><span class=\"token operator\">&amp;</span>apellido<span class=\"token punctuation\">)</span>\n\n\tusuario <span class=\"token operator\">:=</span> models<span class=\"token punctuation\">.</span>Usuario<span class=\"token punctuation\">{</span>faker<span class=\"token punctuation\">.</span><span class=\"token function\">Number</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">.</span><span class=\"token function\">NumberInt</span><span class=\"token punctuation\">(</span><span class=\"token number\">5</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span> nombre<span class=\"token punctuation\">,</span> apellido<span class=\"token punctuation\">}</span>\n\tusuarios <span class=\"token operator\">=</span> <span class=\"token function\">append</span><span class=\"token punctuation\">(</span>usuarios<span class=\"token punctuation\">,</span> usuario<span class=\"token punctuation\">)</span>\n\tfmt<span class=\"token punctuation\">.</span><span class=\"token function\">Println</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"usuario creado exitosamente\"</span><span class=\"token punctuation\">)</span>\n\n<span class=\"token punctuation\">}</span>\n\n<span class=\"token keyword\">func</span> <span class=\"token function\">updateUser</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n\t<span class=\"token boolean\">_</span><span class=\"token punctuation\">,</span> indice <span class=\"token operator\">:=</span> <span class=\"token function\">getUserByIndex</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\n\t<span class=\"token keyword\">var</span> nombre<span class=\"token punctuation\">,</span> apellido <span class=\"token builtin\">string</span>\n\tfmt<span class=\"token punctuation\">.</span><span class=\"token function\">Println</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Escriba el nombre:\"</span><span class=\"token punctuation\">)</span>\n\tfmt<span class=\"token punctuation\">.</span><span class=\"token function\">Scanln</span><span class=\"token punctuation\">(</span><span class=\"token operator\">&amp;</span>nombre<span class=\"token punctuation\">)</span>\n\n\tfmt<span class=\"token punctuation\">.</span><span class=\"token function\">Println</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Escriba el apellido:\"</span><span class=\"token punctuation\">)</span>\n\tfmt<span class=\"token punctuation\">.</span><span class=\"token function\">Scanln</span><span class=\"token punctuation\">(</span><span class=\"token operator\">&amp;</span>apellido<span class=\"token punctuation\">)</span>\n\n\tusuarios<span class=\"token punctuation\">[</span>indice<span class=\"token punctuation\">]</span><span class=\"token punctuation\">.</span>Nombre <span class=\"token operator\">=</span> nombre\n\tusuarios<span class=\"token punctuation\">[</span>indice<span class=\"token punctuation\">]</span><span class=\"token punctuation\">.</span>Apellido <span class=\"token operator\">=</span> apellido\n\n\tfmt<span class=\"token punctuation\">.</span><span class=\"token function\">Println</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Usuario actualizado exitosamente\"</span><span class=\"token punctuation\">)</span>\n\n<span class=\"token punctuation\">}</span>\n\n<span class=\"token comment\">// FillInitialData rellena la base de datos con datos fake</span>\n<span class=\"token keyword\">func</span> <span class=\"token function\">FillInitialData</span><span class=\"token punctuation\">(</span>cantidad <span class=\"token builtin\">uint</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n\t<span class=\"token keyword\">for</span> i <span class=\"token operator\">:=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span> i <span class=\"token operator\">&lt;=</span> <span class=\"token function\">int</span><span class=\"token punctuation\">(</span>cantidad<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span> i<span class=\"token operator\">++</span> <span class=\"token punctuation\">{</span>\n\t\tusuario <span class=\"token operator\">:=</span> models<span class=\"token punctuation\">.</span>Usuario<span class=\"token punctuation\">{</span>faker<span class=\"token punctuation\">.</span><span class=\"token function\">Number</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">.</span><span class=\"token function\">NumberInt</span><span class=\"token punctuation\">(</span><span class=\"token number\">5</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span> faker<span class=\"token punctuation\">.</span><span class=\"token function\">Name</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">.</span><span class=\"token function\">FirstName</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span> faker<span class=\"token punctuation\">.</span><span class=\"token function\">Name</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">.</span><span class=\"token function\">LastName</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">}</span>\n\t\tusuarios <span class=\"token operator\">=</span> <span class=\"token function\">append</span><span class=\"token punctuation\">(</span>usuarios<span class=\"token punctuation\">,</span> usuario<span class=\"token punctuation\">)</span>\n\t<span class=\"token punctuation\">}</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<p>En los controladores solamente he utilizado paquetes de la biblioteca standar, con la única exception de un paquete para la generación de datos fake <code class=\"language-text\">syreclabs.com/go/faker</code> para poder hacer pruebas.</p>\n<p>Una de las cosas que mas me llamó la atención acerca de Go es la posibilidad de que un método pueda retornar mas de un valor simultaneamente.</p>\n<p>Otra de las cosas un poco extrañas es la forma en como Go maneja el acceso a las funciones declaradas en otros paquetes:</p>\n<ul>\n<li>Todos las variables y métodos que comienzan con letra mayúsculas pueden ser accedidos desde otros paquetes, de lo contrario solo pueden ser accedidos del paquete actual, esto también aplica para los structs y para los datos internos que alberga.</li>\n</ul>\n<p>Para construir/compilar el codigo debes ejecutar el siguiente comando en terminal:</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">go build main.go</code></pre></div>\n<p>Para ejecutar el proyecto:</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">./main</code></pre></div>\n<p>El resultado debe ser algo como esto:\n<span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto;  max-width: 216px;\"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/ac5eff1e3c47cdd09b7ed9a8ff4fc7f8/2914c/crud-memoria-go.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n    <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 56.01851851851851%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAAsSAAALEgHS3X78AAABjElEQVQoz4WSSXLCMBBFvSYbZgKE0QTMaDxgPIDJBqeK+9+n49fEEFKksuiS1JJ+v9+SMRgMJQj2st+Hst06stsFEobXOXnf3+XzrcRxLJ7ni+u6mifHOo4T6fcHUq83pNlsiYHgeGyqIGKr1Vo2G1sWi6UcDge9gOh8vlABx3HlfM7yvWN+fieWNZder38XZIEIBByGDIH1eiNRFGuRIg+d63qSpicFwAnrB0EIwb9e8NQOJFd7nl6CJE3TfC+Q6XSW0y/ycSqzmaUw3e6bNBrNuyAVLMtSGiigw7Ztb+V4TL/tBbJcrqRSqWpUqzUN5gUdosZwOBLCtu2bVexQ+XT60D5C2el0VaDVetXLv+NGiBiPQnOhCcNIrUCVJImKsoakVqs/0DwTNkajsZimqXYghM5xHLULHa9LrugtAIXoU0F6yD/yfT9/1Ui/CZSQIQZpln1qXC4XpYX0T8HiS1AZ25PJu0CNWLvd0RF6esrZn5/4qWCWZUpTKr1oZRrPSM/oU/Gq5TJR+beHX+KpP7B7bRb8AAAAAElFTkSuQmCC'); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n        <source\n          srcset=\"/static/ac5eff1e3c47cdd09b7ed9a8ff4fc7f8/0a351/crud-memoria-go.webp 216w\"\n          sizes=\"(max-width: 216px) 100vw, 216px\"\n          type=\"image/webp\"\n        />\n        <source\n          srcset=\"/static/ac5eff1e3c47cdd09b7ed9a8ff4fc7f8/2914c/crud-memoria-go.png 216w\"\n          sizes=\"(max-width: 216px) 100vw, 216px\"\n          type=\"image/png\"\n        />\n        <img\n          class=\"gatsby-resp-image-image\"\n          src=\"/static/ac5eff1e3c47cdd09b7ed9a8ff4fc7f8/2914c/crud-memoria-go.png\"\n          alt=\"protipo-con-vue\"\n          title=\"protipo-con-vue\"\n          loading=\"lazy\"\n        />\n      </picture>\n  </a>\n    </span></p>","fields":{"slug":"/posts/crud-en-memoria-go/","tagSlugs":["/tag/go/","/tag/backend/"]},"frontmatter":{"date":"2020-01-02T22:12:03.284Z","description":"Recientemente he estado trasteando con el lenguaje Go, y como siempre he dicho: la mejor manera de aprender es haciendo, por lo cual he realizado un pequeño proyecto de consola para poder practicar","tags":["Go","Backend"],"title":"CRUD en memoria con Golang","socialImage":"/media/image-2.jpg"}}},"pageContext":{"isCreatedByStatefulCreatePages":false,"slug":"/posts/crud-en-memoria-go/"}}}