Go ha sido un lenguaje importante en mi carrera personal. Construí un servidor de anuncios de audio sólido y un SSP con él cuando era director de tecnología en Soundcast. Go hace que la creación de redes y el paralelismo sean tan fáciles que parece hacer trampa. Todo eso con un desempeño realmente bueno, que era perfecto para el trabajo que teníamos que hacer.
En la parte 1, revelamos los fundamentos de la fase de construcción del software. En este artículo, haremos que esto sea más relevante con la ayuda de un idioma que tiene un lugar especial en mi corazón. De hecho, si bien los fundamentos de la creación de software son similares en todos los idiomas, cada ecosistema lingüístico tiene sus propias herramientas y prácticas únicas.
Sin más preámbulos, exploremos estos, con un enfoque particular en Go.
Go, diseñado por Google, adopta un enfoque de construcción único que enfatiza la simplicidad y la velocidad.
Go viene con un comando de compilación. Este comando compila los paquetes nombrados por las rutas de importación, junto con sus dependencias, pero no instala los resultados. Genera un archivo ejecutable.
Ejemplo:
go build main.go
Una de las características más útiles del compilador Go es la capacidad de realizar una compilación cruzada con mucha facilidad. Todo lo que tiene que hacer es configurar las variables de entorno GOOS y GOARCH para apuntar a las plataformas deseadas.
Ejemplo:
GOOS=windows GOARCH=amd64 go build main.go
Esto creará un ejecutable para Windows bajo una arquitectura AMD64.
Go mod llegó un poco tarde porque se introdujo con Go 1.11, pero es un sistema de gestión de dependencias integrado. Antes de eso, teníamos que colocar todos nuestros proyectos de Go en un directorio dedicado en nuestra máquina llamado {$GOPATH}. Si bien funcionó, Go mod ahora nos brinda más flexibilidad, ¡lo cual es genial!
El uso es bastante sencillo, como todo en Go.
Puedes agregar compilación condicional usando etiquetas de compilación, pero la característica más interesante, en mi opinión, es que Go almacena automáticamente en caché los resultados de la compilación para acelerar las compilaciones posteriores (por supuesto, puedes limpiar el caché si es necesario).
Incrustación de recursos
Si tiene archivos estáticos que desea incluir en su binario, puede usar la directiva //go:embed.
Detección de carrera
Go es increíble cuando se trata de paralelismo. Con su sistema de rutinas y canales para comunicarse entre ellas, los desarrolladores pueden dividir fácilmente la carga de trabajo del software en diferentes núcleos. Pero también es fácil estropear las cosas y crear "carreras".
Una carrera de datos ocurre cuando dos gorutinas acceden a la misma variable simultáneamente y al menos uno de los accesos es de escritura. Consulte el modelo The Go Memory para obtener más detalles.
¡El compilador Go puede ayudarte a encontrarlos!
Usa la bandera de carrera para detectar las condiciones de la carrera:
go build -race main.go
Perfiles y optimización
Una de las principales cosas que me gusta de Go es su rendimiento. Este lenguaje da resultados sólidos sin mucho esfuerzo. Pero si desea hacer un esfuerzo adicional, el ecosistema Go también le brinda herramientas realmente excelentes para medir su rendimiento y optimizar su código.
No voy a entrar en detalles, pero si quieres profundizar en el tema, te invito a leer esta joya: https://www.practical-go-lessons.com/chap-34-benchmarks
Modos de compilación personalizados
A veces, no estás creando software sino un complemento o una biblioteca, por ejemplo. El equipo de Go te respalda. ¡En Go, puedes definir el modo de construcción para obtener el resultado que deseas!
Como puede ver, Go proporciona muchas funciones en su compilador y ecosistema para permitir a los desarrolladores aprovechar al máximo la tecnología Go.
Y eso es todo por hoy. Publicaré otro artículo esta semana mostrando las técnicas de creación de TypeScript, ¡así que suscríbete o síguenos si quieres asegurarte de no perdértelo!
Hasta entonces, ¡feliz codificación!
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3