Muchos programadores describen Go como un lenguaje de programación WYSIWYG. Es decir, el código quiere hacer exactamente lo mismo que el significado literal. Entre estos nuevos lenguajes, incluidos D, Go, Rust y Vala, Go apareció una vez en la lista de TIOBE. En comparación con otros lenguajes nuevos, el encanto de Go es obviamente mucho mayor. Muchos desarrolladores apreciarán las características maduras de Go, y no sólo por su exposición exagerada. Analicemos el lenguaje Go desarrollado por Google y por qué Go atraerá a muchos desarrolladores: Compilación rápida y sencilla Go es muy rápido, y una compilación tan rápida hace que sea fácil de usar como lenguaje de programación. Hay varias razones para la alta velocidad de compilación: en primer lugar, Go no utiliza archivos de encabezado, en segundo lugar, si un módulo depende de A y A depende de B, entonces el cambio de requisitos en A solo requiere volver a compilar el módulo original y los lugares en los que se encuentra. depende de A. ;Finalmente, el módulo de destino contiene suficiente información de dependencia para que el compilador no necesite recrear el archivo. Sólo necesita compilar el módulo principal y otras partes necesarias en el proyecto se compilarán automáticamente. Genial, ¿no? Actualmente, existen dos formas principales de manejar errores en los idiomas locales: devolver códigos directamente o generar excepciones. Tampoco es la mejor manera de manejarlo. Los códigos devueltos son muy frustrantes porque los códigos de error devueltos a menudo entran en conflicto con los datos devueltos por la función. Go resuelve este problema al permitir que las funciones devuelvan múltiples valores. El valor devuelto por la función se puede utilizar para verificar si el tipo definido es correcto y verificar el valor de retorno de la función en cualquier momento y en cualquier lugar. Si no le importan los valores incorrectos, no es necesario que los compruebe. En ambos casos, se encuentran disponibles valores de retorno regulares. Componentes simplificados (antes de la herencia) Al utilizar interfaces, los tipos se califican como miembros de objetos, al igual que Java especifica el comportamiento. Por ejemplo, en el paquete IO de la biblioteca estándar, un escritor se define para especificar un método, una función de escritor, donde el parámetro de entrada es una matriz de bytes y devuelve un valor entero o un tipo de error. Una implementación de cualquier tipo de método de escritura con la misma firma es una implementación completa de IO (Writer Interface). Este es un código desacoplado, no elegante. También simplifica la burla de objetos para pruebas unitarias. Por ejemplo, si desea probar un método en un objeto de base de datos, en lenguajes estándar, generalmente necesita crear un objeto de base de datos, lo que requiere mucha inicialización y protocolos para simular el objeto. En Go, si un método necesita implementar una interfaz, puede crear cualquier objeto que sea útil para la interfaz, por lo que crea una MockDatabase, que es un objeto muy pequeño que solo implementa unas pocas interfaces que deben ejecutarse y simularse. nada Constructor, sin funciones adjuntas, solo algunos métodos. La simultaneidad es fácil La simultaneidad en Go es más fácil en comparación con otros lenguajes. Coloque la palabra clave "go" delante de cualquier función y la función se ejecutará automáticamente en su rutina go (un hilo muy ligero). Las rutinas go se comunican a través de canales y esencialmente bloquean todos los mensajes en cola. Las herramientas comunes son útiles para la exclusión mutua, pero Go utiliza canales para eliminar tareas y coordinaciones simultáneas mucho más fácilmente. Excelentes mensajes de error Todos los idiomas como Go son inferiores a Go en sus propios diagnósticos. Por ejemplo, si se está ejecutando un programa de interbloqueo, Go le notificará qué hilo está causando actualmente el interbloqueo. Los mensajes de error compilados son muy detallados, completos y útiles. Hay muchos otros lugares atractivos aquí, así que presentémoslos brevemente, como funciones de orden superior, recolección de basura, mapeo hash y lenguaje incorporado de matriz expandible (parte de la sintaxis del lenguaje, no como una biblioteca), etc. Por supuesto, Go no es perfecto. Todavía hay algunos aspectos inmaduros en las herramientas y la base de usuarios es pequeña. Sin embargo, con el desarrollo continuo del lenguaje de Google, definitivamente habrá medidas correctivas. Aunque muchos lenguajes, especialmente D, Rust y Vala, tienen como objetivo simplificar C++ y simplificarlo, todavía dan a la gente la impresión de que "C++ se ve mejor".
Ventajas del lenguaje Go
Se puede compilar directamente en código máquina sin depender de otras bibliotecas. La versión de glibc tiene ciertos requisitos. Simplemente agregue un archivo y se completará la implementación.
Un lenguaje escrito estáticamente, pero con la sensación de un lenguaje dinámico. Los lenguajes de tipo estático son el problema más insidioso que se puede detectar en tiempo de compilación. El lenguaje dinámico da a la gente la impresión de que hay muchos paquetes que se pueden utilizar y la eficiencia de la escritura es muy alta.
El nivel de idioma admite la concurrencia, que es la característica más importante de Go. Admite la concurrencia de forma natural. Una vez dije que hay una diferencia entre genética y cirugía plástica.
Todo el mundo es igual de bello, pero ¿prefieres la cirugía plástica o la belleza genética natural? Go tiene soporte genético para la concurrencia, lo que puede hacer un uso completo de los núcleos múltiples y facilitar el uso de la concurrencia.
El tiempo de ejecución integrado admite la recolección de basura, que es una de las características de los lenguajes dinámicos. Aunque GC aún no es perfecto, es suficiente para manejar la mayoría de las situaciones que podemos encontrar, especialmente después de Go1.1.
Simple y fácil de aprender Todos los autores del lenguaje Go tienen genes C, por lo que Go naturalmente tiene genes C, por lo que hay 25 palabras clave de Go, pero la capacidad expresiva es muy fuerte, casi te ayuda a hacerlo. Véalo en otros idiomas. La mayoría de las características que se han cubierto: herencia, sobrecarga, objetos, etc.
Bibliotecas estándar ricas. Go ha creado una gran cantidad de bibliotecas, especialmente la biblioteca de red que es muy poderosa, que también es mi parte favorita.
Potentes herramientas integradas, el lenguaje Go tiene muchas cadenas de herramientas integradas. La mejor herramienta debería ser la herramienta gofmt, que puede formatear automáticamente el código y hacer que la revisión del equipo sea tan simple. lo mismo, y es difícil ser diferente.
Compilación multiplataforma. Si el código Go que escribe no contiene cgo, puede compilar aplicaciones Linux en el sistema Windows. ¿Cómo podría ser? Go se refiere al código de plan9, que es información independiente del sistema.
Compatibilidad con C integrado, como se mencionó anteriormente, el autor es el autor de C, por lo que Go también puede incluir directamente código C y hacer uso de la rica biblioteca C existente.