El lenguaje de programación Go ha evolucionado mucho desde que se publicó por primera vez en 2009. Go 1.18 fue un lanzamiento muy esperado debido a su compatibilidad con genéricos y muchas otras actualizaciones importantes.
Go lanzó la versión 1.18 en marzo de 2022. Aquí está la verdad sobre los cambios más significativos.
Soporte para genéricos
La programación genérica le permite escribir funciones que pueden aceptar y devolver tipos más flexibles.
Antes de la compatibilidad con los genéricos, era necesario indicar explícitamente los tipos de parámetros y los tipos de devolución. La forma más simple de genéricos le permite especificar parámetros sin tipo:
funciónimprimircualquier cosa[T cualquiera](cosaT) {
fmt.Imprimir(cosa)
}
Pero los genéricos ofrecen mucho más poder que solo esto. Puede declarar casi cualquier combinación y granularidad de tipo para los parámetros. Por ejemplo, puede utilizar el restricciones paquete para escribir una función que opere en cualquier valor que pueda ordenar. Esto incluye int, floats y strings. He aquí un ejemplo que demuestra la sintaxis:
importar "golang.org/x/exp/restricciones"
funciónmáx.[T restricciones. Ordenado](aporte[]T) (máximoT) {
para _, v := entrada de rango {
si v > máximo {
máx = v
}
}
devolver máximo
}
Tenga en cuenta que esta función utiliza el tipo genérico, restricciones Ordenado, para declarar su parámetro y su tipo de retorno.
Los genéricos proporcionan incertidumbre y flexibilidad en el código. La propuesta de Generics y los cambios son compatibles con versiones anteriores.
Pruebas Fuzz
Fuzzing es un técnica de prueba de software que valida un programa con datos erróneos, inesperados o impredecibles.
Él pruebas El paquete introduce fuzzing en 1.18, por lo que para definir un fuzz, debe importarlo desde la biblioteca estándar:
importar "pruebas"
Después de importar el pruebas paquete, puede pasar un identificador de tipo *pruebas. F a la función de prueba.
funcióntestFunc(f *prueba. F) {
// tu codigo
}
Fuzzing genera parámetros de entrada para probar el código. El resultado del fuzzing es impredecible ya que las entradas no están definidas por el usuario. Fuzzing debería ayudarlo a escribir mejores pruebas de código y detectar errores que no sabía que existían.
Ir al soporte del espacio de trabajo
Los espacios de trabajo son directorios de código fuente similar que conforman un proyecto o una unidad más grande. Los espacios de trabajo facilitan la administración y depuración de código al agrupar código similar según la funcionalidad.
Convencionalmente, los proyectos de Go se subdividen en código fuente (origen) y archivos ejecutables (compartimiento). La cadena de herramientas Go construye el código fuente del primero en ejecutables en el segundo. Los espacios de trabajo de Go permiten a los desarrolladores trabajar con varios espacios de trabajo utilizando módulos de Go con un módulo principal en particular.
El comando para crear espacios de trabajo es:
$ ve a trabajar <dominio>
Utilizar el trabaja comando con subcomandos como:
- en eso → crea un espacio de trabajo en el directorio especificado.
- usar → agrega un nuevo módulo a go.work, el archivo del espacio de trabajo de go.
- editar → edita el archivo del espacio de trabajo go.
- sincronizar → sincroniza las dependencias de la lista de compilación con los módulos del espacio de trabajo.
La inclusión de espacios de trabajo para llevar aumentaría la productividad según lo previsto en el desarrollo del lenguaje.
Mejoras de rendimiento
Vamos la versión 1.18 ahora admite ARM64 Apple M1 y PowerPC de 64 bits en la convención de llamadas ABI. Esto da como resultado una ganancia de más del 10 % en el rendimiento de la CPU para los usuarios de estos dispositivos.
Las variables declaradas y no utilizadas en las funciones ahora se registran como errores en la compilación del programa.
Él ir a construir El comando, junto con otros comandos relacionados, admite el -asan flag, que admite la interoperabilidad con C/C++. Esto ayudará a los desarrolladores de Go a usar programas Go con programas C y C++.
Otras actualizaciones importantes
Él ir a buscar El comando ya no instala paquetes en modo compatible con módulos, lo cual es un gran cambio desde cuando Primero comencé con Go. Él ir a instalar comando reemplaza conseguir para ajustar las dependencias de los módulos en los espacios de trabajo.
Dado que el verificador de tipos ahora maneja genéricos, los mensajes de error pueden registrarse de manera diferente que en versiones anteriores.
El tiempo de compilación de los programas puede ser más lento en 1.18. Pero esto no afectará el tiempo de ejecución una vez que Go haya compilado su programa.
Puede encontrar los detalles completos de todos los cambios más recientes en las notas de la versión de Ir 1.18.
Go 1.18 tiene varias adiciones diversas
Con Go 1.18, ahora puede escribir código genérico, realizar pruebas de manera eficiente con fuzzing y cambiar entre módulos de Go utilizando espacios de trabajo. Incluso puede escribir código que funcione junto con programas C y C++.
¿Vale la pena aprender Golang hoy?
Leer siguiente
Temas relacionados
- Programación
- Programación
- Lenguajes de programación
Sobre el Autor
Suscríbete a nuestro boletín
¡Únase a nuestro boletín para obtener consejos técnicos, reseñas, libros electrónicos gratuitos y ofertas exclusivas!
Haga clic aquí para suscribirse