"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > Técnicas de construcción: una inmersión profunda en Go

Técnicas de construcción: una inmersión profunda en Go

Publicado el 2024-11-08
Navegar:751

Building Techniques: A Deep Dive into Go

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.

El enfoque de Go para la construcción

Go, diseñado por Google, adopta un enfoque de construcción único que enfatiza la simplicidad y la velocidad.

Un comando

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

Compilación cruzada en 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.

Ir a módulos

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.

  • go mod init inicializa un nuevo módulo.
  • El archivo go.mod rastrea las dependencias y sus versiones.

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).

Técnicas avanzadas de construcción de Go

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!

  • Crear bibliotecas compartidas: vaya a compilar -buildmode=c-shared
  • Compilación de complementos: vaya a compilar -buildmode=plugin
  • Obtenga la lista completa en https://pkg.go.dev/cmd/go#hdr-Build_modes

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!

Declaración de liberación Este artículo se reproduce en: https://dev.to/gdsources/building-techniques-a-deep-dive-into-go-27ed?1 Si hay alguna infracción, comuníquese con [email protected] para eliminarla.
Último tutorial Más>

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