Programación en Go 2ed
()
Información de este libro electrónico
Go es el lenguaje presentado por Google en 2009, concebido y diseñado para aumentar la productividad y la calidad de su propio software. Su rapidez y ligereza no obvian las características deseables de todo buen lenguaje de alto nivel: expresividad, limpieza, seguridad y potentes abstracciones que simplifican conceptos que hasta ahora eran sinónimo de complejidad. Todo ello, acompañado por un impresionante conjunto de herramientas gratuitas, han convertido a Go en la elección de grandes proyectos, como Docker o Kubernetes, y a sus programadores, en un solicitado grupo de profesionales.
Este libro le permitirá realizar un recorrido a través de las principales características de Go, en cuanto a sintaxis y funcionalidad, así como:
•Conocer las funcionalidades más utilizadas de su inmensa biblioteca estándar.
•Ahondar en la filosofía de su sistema de tipos de datos, que ha contribuido a dar la vuelta al modo en que el software se diseña.
•Crear software que es capaz de aprovechar al máximo los actuales computadores multiprocesador y multinúcleo.
•Coordinar y comunicar, con extrema sencillez, miles de procesos que se ejecutan en paralelo.
•Empezar rápidamente a crear aplicaciones profesionales, y adquirir sólidas bases sobre servicios web, serialización de datos o conexión a bases de datos, entre otras.
Además, en el apéndice de esta segunda edición se describe el mecanismo de funciones y tipos de datos genéricos, una de las últimas y más demandadas inclusiones, que amplía el paradigma del lenguaje y lo equipara en funcionalidades a los lenguajes de mayor implantación en la industria.
No pierda la oportunidad de mejorar su cotización como profesional, a través de un itinerario temático diseñado para facilitar su toma de contacto con el lenguaje y acelerar su profundización en los conceptos más avanzados de Go. Amortizará decenas de veces la adquisición de este libro con el tiempo que ahorrará en la búsqueda de documentación y tutoriales en línea. Este libro le proporciona, ya compilado y pulido, todo el conocimiento que necesita para consolidarse como programador en Go.
Relacionado con Programación en Go 2ed
Libros electrónicos relacionados
Programación en Go Calificación: 5 de 5 estrellas5/5Aprende programación de computadoras Calificación: 5 de 5 estrellas5/5El Libro Práctico Del Programador Ágil Calificación: 5 de 5 estrellas5/5Aprende a Programar ASP .NET y C# - Segunda Edición Calificación: 0 de 5 estrellas0 calificacionesAprende a Programar en ASP .NET y C# Calificación: 0 de 5 estrellas0 calificacionesEstructuras de datos orientadas a objetos Calificación: 0 de 5 estrellas0 calificacionesAprende a Desarrollar con Spring Framework Calificación: 3 de 5 estrellas3/5Aprender Javascript Avanzado con 100 ejercicios prácticos Calificación: 5 de 5 estrellas5/5Control de Versiones de Software con GIT Calificación: 0 de 5 estrellas0 calificacionesAprende programación Python: python, #1 Calificación: 0 de 5 estrellas0 calificacionesControl de Versiones de Software con GIT - 2º Edición Calificación: 0 de 5 estrellas0 calificacionesAprender Docker, un enfoque práctico Calificación: 5 de 5 estrellas5/5Aprende a programar en Python: de cero al infinito Calificación: 0 de 5 estrellas0 calificacionesEl Libro Negro del Programador Calificación: 4 de 5 estrellas4/5Django 2 Calificación: 5 de 5 estrellas5/5Aprende a programar con pseudocódigo, diagramas de flujo y ejercicios de ejemplo resueltos en C: Algoritmos y lógica para aprender programación desde cero Calificación: 0 de 5 estrellas0 calificacionesProgramación orientada a objetos en Java Calificación: 4 de 5 estrellas4/5Fundamentos de Programación y Bases de Datos Calificación: 0 de 5 estrellas0 calificacionesBackbone JS. JavaScript Framework. 2ª Edición Calificación: 0 de 5 estrellas0 calificacionesJEE 7 a Fondo: Diseño y desarrollo de aplicaciones Java Enterprise Calificación: 0 de 5 estrellas0 calificacionesEl gran libro de Android: 7ª Edición Calificación: 0 de 5 estrellas0 calificacionesAprende Programación Web con PHP y MySQL Calificación: 4 de 5 estrellas4/5Programación en C++ Calificación: 2 de 5 estrellas2/5Programación Orientada a Objetos en JAVA Calificación: 0 de 5 estrellas0 calificacionesCurso de Programación y Análisis de Software - 2ª Edición Calificación: 0 de 5 estrellas0 calificacionesEl gran libro de Android Avanzado Calificación: 0 de 5 estrellas0 calificacionesAngularJS: Conviértete en el profesional que las compañías de software necesitan. Calificación: 4 de 5 estrellas4/5Legacy Code Calificación: 4 de 5 estrellas4/5Programación en Objetive-C con Xcode y GCC Calificación: 0 de 5 estrellas0 calificacionesConstruya su propio supercomputador con Raspberry Pi Calificación: 5 de 5 estrellas5/5
Programación para usted
Excel de la A a la Z: El Manual Práctico Paso a Paso de Microsoft Excel para Aprender Funciones Básicas y Avanzadas, Fórmulas y Gráficos con Ejemplos Fáciles y Claros Calificación: 0 de 5 estrellas0 calificacionesPython Paso a paso: PROGRAMACIÓN INFORMÁTICA/DESARROLLO DE SOFTWARE Calificación: 4 de 5 estrellas4/5GuíaBurros Microsoft Excel: Todo lo que necesitas saber sobre esta potente hoja de cálculo Calificación: 4 de 5 estrellas4/5Python a fondo Calificación: 5 de 5 estrellas5/5VBA Excel Guía Esencial Calificación: 5 de 5 estrellas5/5Aprender a programar con Excel VBA con 100 ejercicios práctico Calificación: 5 de 5 estrellas5/5Tablas dinámicas y Gráficas para Excel: Una guía visual paso a paso Calificación: 0 de 5 estrellas0 calificacionesPython para principiantes Calificación: 5 de 5 estrellas5/5JavaScript: Guía completa Calificación: 4 de 5 estrellas4/5Aprende programación Python: python, #1 Calificación: 0 de 5 estrellas0 calificacionesHTML para novatos Calificación: 5 de 5 estrellas5/5El gran libro de Python Calificación: 5 de 5 estrellas5/5Curso básico de Python: La guía para principiantes para una introducción en la programación con Python Calificación: 0 de 5 estrellas0 calificacionesFundamentos De Programación Calificación: 5 de 5 estrellas5/5Programación (GRADO SUPERIOR): PROGRAMACIÓN INFORMÁTICA/DESARROLLO DE SOFTWARE Calificación: 4 de 5 estrellas4/5Aprendizaje automático y profundo en python: Una mirada hacia la inteligencia artificial Calificación: 0 de 5 estrellas0 calificacionesProgramación orientada a objetos con C++, 5ª edición. Calificación: 5 de 5 estrellas5/5Linux Essentials: una guía para principiantes del sistema operativo Linux Calificación: 5 de 5 estrellas5/5Curso de Programación y Análisis de Software Calificación: 4 de 5 estrellas4/5Arduino. Trucos y secretos.: 120 ideas para resolver cualquier problema Calificación: 5 de 5 estrellas5/5Aprender PHP, MySQL y JavaScript Calificación: 5 de 5 estrellas5/5Todo el mundo miente: Lo que internet y el big data pueden decirnos sobre nosotros mismos Calificación: 4 de 5 estrellas4/5Tablas dinámicas para todos. Desde simples tablas hasta Power-Pivot: Guía útil para crear tablas dinámicas en Excel Calificación: 0 de 5 estrellas0 calificacionesPython Aplicaciones prácticas Calificación: 4 de 5 estrellas4/5Ortografía para todos: La tabla periódica de la ortografía Calificación: 5 de 5 estrellas5/5Controles PLC con Texto Estructurado (ST): IEC 61131-3 y la mejor práctica de programación ST Calificación: 3 de 5 estrellas3/5AngularJS: Conviértete en el profesional que las compañías de software necesitan. Calificación: 4 de 5 estrellas4/5115 Ejercicios resueltos de programación C++ Calificación: 3 de 5 estrellas3/5Aprende a Programar en C++ Calificación: 5 de 5 estrellas5/5
Comentarios para Programación en Go 2ed
0 clasificaciones0 comentarios
Vista previa del libro
Programación en Go 2ed - Mario Macias Lloret
Capítulo 1
INSTALACIÓN Y USO DE GO
1.1 INSTALANDO GO
Go está disponible para descarga gratuita desde su página web:
http://golang.org
En la página principal, haga clic en el enlace titulado Download Go
, que le llevará a la página de descargas (Figura 1.1), donde encontrará los diversos paquetes para su sistema operativo (Windows, Linux, Mac).
Tan solo instale el paquete descargado y siga las instrucciones de instalación. Si la instalación ha tenido éxito, puede abrir una sesión de línea de comandos y verificar que el ejecutable go está en su ruta de programas:
La instalación por defecto de Go consiste en:
•El compilador go , que le permite generar sus archivos ejecutables.
•Herramientas útiles para la programación: depuradores, analizadores de rendimiento, comprobadores de código…
•La biblioteca estándar de Go: una extensa colección de funcionalidades que usted puede incorporar en sus programas.
•La documentación estándar de Go, accesible a través del comando godoc .
illustrationFigura 1.1 Página web oficial de descargas de Go.
1.2 COMANDOS BÁSICOS DE GO
A continuación, se muestran algunos de los comandos más habituales de Go, que pueden serle de utilidad durante su proceso de aprendizaje:
•go build
–Ejecutándose desde el directorio raíz de su proyecto Go, genera un archivo ejecutable del proyecto.
•go run
–Para ejecutar su programa de Go directamente, sin generar un ejecutable. Útil durante la etapa de desarrollo.
•go fmt ./...
–Ejecutándose desde el directorio raíz de su proyecto, reformatea todos los archivos de código fuente según el formato estándar de Go. Su uso es, si no obligado de facto , sí muy recomendable.
•go vet ./...
–Ejecutándose desde el directorio raíz de su proyecto, busca patrones de código susceptibles de ocasionar errores o comportamientos incorrectos.
•godoc
–Abre un servidor web en la dirección http://localhost:6060/ . Si lo abre desde su navegador, podrá navegar localmente por toda la documentación de las diferentes bibliotecas estándar de Go, disponibles en la instalación por defecto.
•go get
–Permite descargar bibliotecas y utilidades de línea de comandos suministradas por terceros.
•go mod
–Permite gestionar sus proyectos locales, así como sus dependencias hacia bibliotecas de terceros.
1.3 EDITANDO SU CÓDIGO EN GO
Para programar en Go, tan solo necesita un editor de texto plano, como un bloc de notas. Sin embargo, es aconsejable utilizar un editor de código o un entorno integrado de desarrollo, que proporciona funcionalidades tales como resaltado de código, comprobación in situ de errores, depuración visual, etc.
Go es compatible con la gran mayoría de editores de código y entornos de desarrollo, directamente o a través de extensiones. La tabla de la Figura 1.2 enumera, por orden alfabético, algunos de los entornos más populares para el desarrollo de proyectos en Go. Aunque su editor favorito no esté en la tabla, es posible que ofrezca soporte básico o resaltado de sintaxis para Go.
illustrationFigura 1.2 Algunos editores y entornos de desarrollo populares para Go.
1.4 COMPILANDO Y EJECUTANDO SU PRIMER PROGRAMA
Comenzaremos a familiarizarnos con Go y sus herramientas mediante la creación y compilación de un programa básico. No se preocupe si no entiende todo su contenido, ya que será explicado en profundidad en los próximos capítulos.
Para empezar, abra un editor de texto plano y cree un archivo cuya extensión sea .go. Por ejemplo, hola.go. Copie el siguiente contenido:
Del código anterior, quizás haya podido deducir algunos de los siguientes componentes de un programa básico en Go:
•El punto de entrada del programa se marca mediante func main() { . El programa comenzará ejecutando el código contenido en el bloque delimitado por llaves { y } .
•Cada fichero está encabezado por una directiva package , que otorga un nombre común para la agrupación (paquete) de todos los archivos Go en un directorio. El punto de entrada del programa debe estar encabezado por package main (paquete principal).
•Cuando se incorporan funcionalidades de la biblioteca estándar o de otras bibliotecas de terceros (por ejemplo, para mostrar un mensaje en pantalla), deben incorporarse explícitamente los paquetes que las contienen mediante la directiva import . En el programa de ejemplo, la directiva import fmt
permite usar funcionalidades de escritura de mensajes en pantalla (entre otras).
•Cualquier texto escrito después de dos barras // es ignorado por el compilador hasta el final de la línea. Allí puede dejar algunos comentarios que ayuden a documentar o entender el código.
–Puede usar comentarios de múltiples líneas si los sitúa entre los símbolos /* y */ .
•El comando fmt.Println muestra un mensaje en pantalla. Está compuesto por el nombre del paquete en el que está guardado ( fmt ) y el nombre de la función Println . Entre paréntesis, se escribe el texto a mostrar (que debe ir entre comillas dobles).
Para saber más sobre Println y sobre el paquete fmt, puede probar a ejecutar el comando godoc en su línea de comandos. Se ejecutará un servidor web local en el que puede abrir la siguiente dirección en su navegador:
http://localhost:6060/pkg/fmt
Dicha dirección le llevará a la documentación del paquete fmt, donde podrá encontrar información completa sobre las funciones que proporciona, muchas de las cuales se explicarán en el próximo capítulo y en el capítulo 14.
Para ejecutar el programa, vaya desde la línea de comandos al directorio que contiene el archivo hola.go y ejecute el siguiente comando:
$ go run hola.go
A continuación del comando escrito, verá el siguiente mensaje:
¡Hola, geómidos!
Esto permite ejecutar el programa en su ordenador personal (ya que tiene instalada la herramienta Go). Para generar un archivo ejecutable que pueda ser ejecutado en otro ordenador, debe utilizar el comando go.build:
$ go build hola.go
El comando anterior creará un archivo ejecutable apto para la misma arquitectura y el mismo sistema operativo desde el cual compila. Si quisiera generar ejecutables para otros sistemas operativos y arquitecturas de procesador, puede usar las variables de entorno GOOS y GOARCH, respectivamente:
GOOS=windows GOARCH=386 go build hola.go
GOOS=linux GOARCH=arm64 go build hola.go
Los comandos anteriores generarían ejecutables para Windows con procesadores Intel de 32 bits, y para Linux con procesadores ARM de 64 bits, respectivamente.
Capítulo 2
SINTAXIS BÁSICA DE GO
Este capítulo explica las características básicas del lenguaje de programación Go. Los fundamentos del lenguaje Go no son, en concepto, muy diferentes de los de otros lenguajes de programación, como Java o C.
2.1 TIPOS DE DATOS BÁSICOS
Una variable es un espacio reservado en la memoria del ordenador para guardar datos cuyo valor puede cambiar durante la vida del programa: un número, una letra, un texto, un luchador de Street Fighter… Una variable irá asociada a un nombre para poder referirnos a ella durante el programa: matrícula, total, jugador1…
Go es un lenguaje con tipado estático
, lo que significa que cada variable tiene un tipo de dato asociado y solo podrá guardar valores de su tipo de dato.
Go provee los siguientes tipos de datos básicos, a partir de los cuales es posible definir variables y ejecutar operaciones básicas:
•bool es el tipo booleano . Los posibles valores que puede tomar son dos: true (cierto) o false (falso).
•string permite guardar cadenas de texto, y acepta cualquier carácter Unicode mediante la codificación UTF-8 (es decir, todos los caracteres del alfabeto latino, más caracteres de otras culturas, incluso emojis ).
•int es un número entero con signo (es decir, permite guardar tanto números enteros positivos como negativos). Su tamaño depende de la plataforma para la cual se compila el programa. Esto significa que el compilador escogerá el tamaño de las variables int que mejor se adapten a la arquitectura del procesador para el cual se compila (generalmente, concordará con el número de bits del procesador: 32 o 64).
–Cuando sea necesario concretar con exactitud el tamaño de una variable, se pueden usar los siguientes tipos: int8 , int16 , int32 , int64 para números enteros con signo de 8, 16, 32 y 64 bits, respectivamente.
•uint es un número entero sin signo (es decir, no acepta números negativos). Al igual que int , su tamaño dependerá de la plataforma (32 o 64 bits).
–Cuando se requiera concretar con exactitud el tamaño de una variable, se pueden usar los siguientes tipos: uint8 , uint16 , uint32 o uint64 .
•byte es el equivalente de uint8 .
•rune es un equivalente para int32 y se usa para representar un carácter (letras, números, signos de puntuación, emojis , y un largo etcétera).
•float32 y float64 representan números de coma flotante (también llamados números reales
) de 32 y 64 bits, respectivamente.
•complex64 y complex128 son números complejos cuyas partes real e imaginaria están representadas por números reales de 32 y 64 bits, respectivamente.
–Un literal de número complejo se escribe como en el siguiente ejemplo: 2.23 + 3i .
2.2 CADENAS DE TEXTO. EL TIPO string
Go permite definir cadenas de texto explícitamente, insertando un texto cualquiera entre comillas dobles:
texto := - Hola, ¿cómo estás?
Si una cadena ha de contener un texto mostrado en diversas líneas, puede introducir el carácter especial de nueva línea \n allá donde quiera que termine una línea y empiece otra:
texto := - Hola, ¿cómo estás?\n- Estoy bien, gracias.
Si una cadena ha de contener comillas dobles en su interior, estas deben especificarse como un carácter especial \", para que Go no las confunda como el final de una cadena de texto:
texto := Podría decirse que estoy \"bien\"...
Cuando un texto contiene múltiples líneas o comillas dobles, puede resultar más limpio substituir el delimitador de comillas dobles por el de acento grave
; esto le permitirá escribir cadenas en múltiples líneas, tomando los saltos de línea como literales. El equivalente a la cadena anterior, sería:
texto := `- Hola, ¿cómo estás?
- Estoy bien
, gracias.`
No debe confundir los delimitadores de cadenas con la comilla simple ', que sirve para especificar caracteres individuales, del tipo byte o rune.
2.3 DEFINICIÓN DE VARIABLES
La manera de definir una variable, dado un nombre y un tipo de dato, es:
var
Por ejemplo:
var dias int
var meses int = 12
Las líneas anteriores definirían una variable llamada dias, del tipo int, y otra variable llamada meses, del tipo int, a la que se le asigna un valor inicial de 12.
Si no se provee un valor inicial, las variables serán inicializadas automáticamente con el valor cero
de cada tipo de dato: 0 para tipos numéricos, false para bool, y la cadena vacía para string.
En aras de la brevedad, se puede omitir tanto la palabra var como su tipo si se usa el operador de inicialización :=:
meses := 12
El compilador de Go inferirá el tipo de la variable meses a un int (ya que es un número sin parte decimal), y aunque el valor de la variable cambie, el tipo siempre deberá ser int.
El símbolo := solo se puede usar para definir una variable. Una vez definida, se usará el operador de asignación = si se desea cambiar su valor. Por ejemplo:
paso := 1 // definición de la variable con un valor inicial
paso = 2 // cambio del valor de la variable
Las guías de estilo de Go recomiendan declarar variables con el operador := siempre que se pueda, aunque las variables globales y las que no tengan valor inicial deberán declararse mediante la forma precedida por var.
2.4 CONVERSIONES EXPLÍCITAS DE TIPOS
En Go, al contrario de lo que ocurre en otros lenguajes de tipado estático, si se quiere asignar una variable numérica a otra variable de otro tipo numérico, se deberá explicitar el tipo de destino de la siguiente manera:
var segundos int8 = 30
var horas int
horas = int(segundos)
En el fragmento anterior, se indica a Go que el valor de la variable segundos, del tipo int8, se va a copiar en otra variable del tipo int. Aunque es obvio que cualquier valor del tipo int8 (8 bits) cabe en una variable del tipo int (32 o 64 bits), Go obliga a hacer explícita esta conversión.
Si la conversión se hace desde un tipo entero de tamaño superior al tipo de destino, se usan los bits menos significativos del tipo de origen que caben en el tipo de destino.
Si la conversión se hace desde un tipo de coma flotante, se trunca la parte con decimales y se asigna la parte entera. Por ejemplo:
distancia := 12.78
kms := int(distancia)
En el ejemplo anterior, la variable kms tomará el valor 12 (eliminando, sin redondeo alguno, el 0.78 de la variable original).
2.5 CONSTANTES
Una constante es un valor literal al que se le asigna un nombre, que no puede cambiar durante la vida del programa. Su definición es similar a la de una variable, pero reemplazando la palabra var por la palabra const. Por