Prefacio

Este trabajo se ha traducido utilizando IA. Agradecemos tus opiniones y comentarios: translation-feedback@oreilly.com

En el prefacio de la primera edición, escribí:

Mi primera elección para el título de un libro fue Go Aburrido porque, bien escrito, Go esaburrido....

Aburrido no significa trivial. Utilizar Go correctamente requiere comprender cómo deben encajar sus características. Aunque puedas escribir código Go que parezca Java o Python, el resultado te disgustará y te preguntarás a qué viene tanto alboroto. Ahí es donde entra este libro. Recorre las características de Go, explicando cómo utilizarlas mejor para escribir código idiomático que pueda crecer.

Go sigue siendo un lenguaje pequeño con un conjunto de características pequeño. Aún carece de herencia, programación orientada a aspectos, sobrecarga de funciones, sobrecarga de operadores, concordancia de patrones, parámetros con nombre, excepciones y muchas características adicionales que complican otros lenguajes. Entonces, ¿por qué un libro sobre un lenguaje aburrido necesita una actualización?

Hay algunas razones para esta edición. En primer lugar, igual que aburrido no significa trivial, tampoco significa inmutable. En los últimos tres años, han llegado nuevas funciones, herramientas y bibliotecas. Mejoras como el registro estructurado, el fuzzing, los espacios de trabajo y la comprobación de vulnerabilidades ayudan a los desarrolladores de Go a crear código fiable, duradero y mantenible. Ahora que los desarrolladores de Go tienen varios años de experiencia con los genéricos, la biblioteca estándar ha empezado a incluir restricciones de tipo y funciones genéricas para reducir el código repetitivo. Incluso el paquete unsafe se ha actualizado para hacerlo un poco más seguro. Los desarrolladores de Go necesitan un recurso que explique cómo utilizar mejor estas nuevas funciones.

En segundo lugar, a algunos aspectos del Go no se les hizo justicia en la primera edición. El capítulo introductorio no fluyó tan bien como me hubiera gustado. No se exploró el rico ecosistema de herramientas Go. Y los lectores de la primera edición pidieron ejercicios y código de ejemplo adicional. Esta edición intenta abordar esas limitaciones.

Por fin, el equipo de Go ha introducido algo nuevo, y, me atrevería a decir, emocionante. Ahora existe una estrategia que permite a Go mantener la compatibilidad con versiones anteriores necesaria para los proyectos de ingeniería de software a largo plazo, a la vez que ofrece la posibilidad de introducir cambios que rompan con las versiones anteriores para solucionar antiguos fallos de diseño. Las nuevas reglas de alcance de variables del bucle for introducidas en Go 1.22 son la primera función que aprovecha este enfoque.

Go sigue siendo aburrido, sigue siendo fantástico, y es mejor que nunca. Espero que disfrutes de esta segunda edición.

Quién debería leer este libro

Este libro está dirigido a desarrolladores que quieren aprender un segundo (o quinto) lenguaje. Se centra en las personas que son nuevas en Go. Esto abarca desde los que no saben nada de Go, aparte de que tiene una bonita mascota, hasta los que ya han trabajado con un tutorial de Go o incluso han escrito algo de código Go. El enfoque de Aprender Go no es sólo cómo escribir programas en Go, sino cómo escribir Go idiomáticamente. Los desarrolladores Go más experimentados pueden encontrar consejos sobre cómo utilizar mejor las nuevas características del lenguaje. Lo más importante es que el lector quiera aprender a escribir código Go que parezca Go.

Se presupone experiencia con las herramientas del oficio de desarrollador, como el control de versiones (preferiblemente Git) y los IDE. Los lectores deben estar familiarizados con conceptos básicos de informática como la concurrencia y la abstracción, ya que el libro explica cómo funcionan en Go. Algunos de los ejemplos de código pueden descargarse de GitHub, y docenas más pueden probarse en línea en The Go Playground. Aunque no es necesaria una conexión a Internet, resulta útil al revisar los ejemplos ejecutables. Dado que Go se utiliza a menudo para construir y llamar a servidores HTTP, algunos ejemplos presuponen familiaridad con conceptos básicos de HTTP.

Aunque la mayoría de las características de Go se encuentran en otros lenguajes, Go hace concesiones diferentes, por lo que los programas escritos en él tienen una estructura distinta. Aprender Go empieza por ver cómo configurar un entorno de desarrollo Go, y luego cubre variables, tipos, estructuras de control y funciones. Si tienes la tentación de saltarte este material, resiste el impulso y échale un vistazo. A menudo son los detalles los que hacen que tu código Go sea idiomático. Algo de lo que parece obvio a primera vista puede ser en realidad sutilmente sorprendente cuando lo piensas en profundidad.

Convenciones utilizadas en este libro

En este libro se utilizan las siguientes convenciones tipográficas:

Cursiva

Indica nuevos términos, URL, direcciones de correo electrónico, nombres de archivo y extensiones de archivo.

Constant width

Se utiliza en los listados de programas, así como dentro de los párrafos para referirse a elementos del programa como nombres de variables o funciones, bases de datos, tipos de datos, variables de entorno, sentencias y palabras clave.

Constant width bold

Muestra comandos u otros textos que deben ser tecleados literalmente por el usuario.

Constant width italic

Muestra el texto que debe sustituirse por valores proporcionados por el usuario o por valores determinados por el contexto.

Consejo

Este elemento significa un consejo o sugerencia.

Nota

Este elemento significa una nota general.

Advertencia

Este elemento indica una advertencia o precaución.

Utilizar ejemplos de código

El material complementario (ejemplos de código, ejercicios, etc.) se puede descargar en https://github.com/learning-go-book-2e.

Si tienes una pregunta técnica o un problema al utilizar los ejemplos de código, envía un correo electrónico a

Este libro está aquí para ayudarte a hacer tu trabajo. En general, si se ofrece código de ejemplo con este libro, puedes utilizarlo en tus programas y documentación. No es necesario que te pongas en contacto con nosotros para pedirnos permiso, a menos que estés reproduciendo una parte importante del código. Por ejemplo, escribir un programa que utilice varios trozos de código de este libro no requiere permiso. Vender o distribuir ejemplos de los libros de O'Reilly sí requiere permiso. Responder a una pregunta citando este libro y el código de ejemplo no requiere permiso. Incorporar una cantidad significativa de código de ejemplo de este libro en la documentación de tu producto sí requierepermiso.

Agradecemos, pero no exigimos, la atribución. Una atribución suele incluir el título, el autor, la editorial y el ISBN. Por ejemplo "Aprendiendo Go por Jon Bodner (O'Reilly). Copyright 2024 Jon Bodner, 978-1-098-13929-2".

Si crees que el uso que haces de los ejemplos de código no se ajusta al uso legítimo o al permiso concedido anteriormente, no dudes en ponerte en contacto con nosotros en

Aprendizaje en línea O'Reilly

Nota

Durante más de 40 años, O'Reilly Media ha proporcionado formación tecnológica y empresarial, conocimientos y perspectivas para ayudar a las empresas a alcanzar el éxito.

Nuestra red única de expertos e innovadores comparten sus conocimientos y experiencia a través de libros, artículos y nuestra plataforma de aprendizaje online. La plataforma de aprendizaje en línea de O'Reilly te ofrece acceso bajo demanda a cursos de formación en directo, rutas de aprendizaje en profundidad, entornos de codificación interactivos y una amplia colección de textos y vídeos de O'Reilly y de más de 200 editoriales. Para más información, visita http://oreilly.com.

Cómo contactar con nosotros

Dirige tus comentarios y preguntas sobre este libro a la editorial:

Tenemos una página web para este libro, donde se enumeran erratas, ejemplos y cualquier información adicional. Puedes acceder a esta página en https://oreil.ly/learning-go-2ed.

Para noticias e información sobre nuestros libros y cursos, visita https://oreilly.com.

Encuéntranos en LinkedIn: https://linkedin.com/company/oreilly-media

Síguenos en Twitter: https://twitter.com/oreillymedia

Míranos en YouTube: https://youtube.com/oreillymedia

Agradecimientos por la 2ª Edición

Me he sentido humilde y halagado por la respuesta a la primera edición de Aprender Go. La empecé a finales de 2019, la terminé a finales de 2020 y la publiqué a principios de 2021. Fue, involuntariamente, mi propio proyecto pandémico. Algunas personas horneaban pan; yo explicaba punteros.

Cuando terminé, la gente me preguntó cuál sería mi próximo libro. Les dije que iba a tomarme un merecido descanso y luego me pondría a trabajar en una novela romántica. Pero antes de que pudiera empezar a escribir sobre piratas y princesas, ocurrió algo asombroso: Aprender a ir fue un gran éxito. Pasó la mayor parte de un año como uno de los cinco libros más populares en O'Reilly Learning. A medida que continuaban las ventas, vi cosas en la primera edición que quería arreglar y recibí cartas de lectores señalando errores y omisiones. Algunos se corrigieron como erratas en ediciones posteriores, pero me puse en contacto con O'Reilly para ver si querían una nueva edición, y se mostraron interesados.

Volver a Learning Go y O'Reilly para la segunda edición fue una experiencia agradable. Rita Fernando proporcionó orientación, comentarios y edición. Esta edición ha mejorado enormemente gracias a los comentarios de Jonathan Amsterdam, Leam Hall, Katie Hockman, Thomas Hunter, Max Horstmann y Natalie Pistunovich. Chris Hines hizo un trabajo increíblemente minucioso al encontrar mis errores y sugerir ejemplos mejores. Los comentarios y opiniones de Abby Deng y los miembros del Go Book Club de Datadog me permitieron hacer cambios basados en las opiniones de desarrolladores nuevos en Go. Los (espero que pocos) errores restantes son todos míos.

Mi mujer y mis hijos tuvieron la amabilidad de no importarle que me saltara las noches de cine familiar mientras averiguaba la mejor forma de describir las nuevas funciones de Go.

También quiero dar las gracias a los lectores de la primera edición que se pusieron en contacto conmigo con sus amables palabras. Os agradezco a todos vuestro apoyo y vuestro ánimo.

Agradecimientos por la 1ª Edición

Escribir un libro parece una tarea solitaria, pero no se consigue sin la ayuda de un gran número de personas. Mencioné a Carmen Andoh que quería escribir un libro sobre Go y en la GopherCon 2019 me presentó a Zan McQuade de O'Reilly. Zan me guió durante el proceso de adquisición y siguió asesorándome mientras escribía Aprendiendo Go. Michele Cronin editó el texto, me dio su opinión y me escuchó durante los inevitables momentos difíciles. La corrección de textos de Tonya Trybula y la edición de producción de Beth Kelly hicieron que mi borrador tuviera calidad de producción.

Mientras escribía, recibí comentarios críticos (y ánimos) de muchas personas, como Jonathan Altman, Jonathan Amsterdam, Johnny Ray Austin, Chris Fauerbach, Chris Hines, Bill Kennedy, Tony Nelson, Phil Pearl, Liz Rice, Aaron Schlesinger, Chris Stout, Kapil Thangavelu, Claire Trivisonno, Volker Uhrig, Jeff Wendling y Kris Zaragoza. Me gustaría reconocer especialmente a Rob Liebowitz, cuyas detalladas notas y rápidas respuestas hicieron que este libro fuera mucho mejor de lo que habría sido sin sus esfuerzos.

Mi familia soportaba que pasara las noches y los fines de semana en el ordenador en lugar de con ellos. En particular, mi mujer, Laura, fingía amablemente que no la despertaba cuando me acostaba a la 1 de la madrugada o más tarde.

Por último, quiero recordar a las dos personas que me iniciaron en este camino hace cuatro décadas. La primera es Paul Goldstein, el padre de un amigo de la infancia. En 1982, Paul nos enseñó un Commodore PET, tecleó PRINT 2 + 2 y pulsó la tecla Intro. Me quedé asombrado cuando la pantalla dijo 4 y quedé enganchado al instante. Más tarde me enseñó a programar e incluso me prestó el PET durante unas semanas. En segundo lugar, me gustaría dar las gracias a mi madre por fomentar mi interés por la programación y los ordenadores, a pesar de no tener ni idea de para qué servía nada de eso. Me compró el cartucho de programación BASIC para la Atari 2600, un VIC-20 y luego un Commodore 64, junto con los libros de programación que me inspiraron el deseo de escribir por mi cuenta algún día.

Gracias a todos por ayudarme a hacer realidad este sueño mío.

Get Aprender Go, 2ª Edición now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.