Fundamentos del lenguaje
30 pasos en 6 series de Go.
Go es tan pequeño que treinta pasos de verdad cubren el lenguaje. Variables y tipos, control de flujo, funciones, slices y mapas, cadenas y formato.
Lo pequeño es el diseño, no una omisión. Casi siempre hay una sola forma obvia de hacer algo, y gofmt zanja la discusión sobre cómo se ve antes de que alguien pueda empezarla.
Variables y tipos
- Variables y constantesFormas de declaración y salida formateada.
- Valores ceroToda variable declarada arranca en el valor cero de su tipo: nada de memoria sin inicializar.
- Constantes e iotaConstantes sin tipo e iota, que es como Go escribe un enum.
- ConversionesGo convierte de forma explícita: nunca hay promoción implícita.
- PunterosGo tiene punteros pero sin aritmética: existen para compartir y para mutar.
Control de flujo
- Condicionales y switchRamificación, incluido el switch sin condición.
- switch, todas sus formasEl switch de Go acepta ir sin condición, varios valores por caso o un inicializador.
- break y continue con etiquetaUna etiqueta nombra el bucle, y así break y continue salen del correcto.
- FizzBuzzEl ejercicio clásico de entrevista para bucles y condicionales.
Funciones
- Funciones y retornos múltiplesEl estilo de firma de Go: valores más un error.
- Funciones variádicasEl último parámetro puede aceptar cualquier número de argumentos, que llegan como slice.
- ClausurasUn valor función captura las variables que usa, no sus valores.
- MCDEl algoritmo de Euclides, todavía la respuesta correcta más corta tras dos mil años.
- Prueba de primalidadDivisiones de prueba hasta la raíz cuadrada, y con eso alcanza.
- Fibonacci iterativoFibonacci sin recursión: dos variables y un bucle.
Arreglos, slices y mapas
- Los arreglos son valoresUn arreglo lleva su longitud fija en el tipo, y asignarlo lo copia.
- SlicesLas vistas de Go sobre arreglos, capaces de crecer.
- Slices: longitud y capacidadUn slice es una vista: puntero, longitud, capacidad — y append puede copiar o no.
- MapasAlmacenamiento clave-valor y el modismo comma-ok.
- Operar un mapaLa lectura comma-ok, delete y la aleatoriedad deliberada de la iteración.
- Máximo de un sliceEncuentra el elemento mayor y muestra por qué un slice vacío exige una decisión.
- Partir un sliceDivide un slice en piezas de tamaño fijo usando expresiones de slice.
- Búsqueda binariaDivide el rango a la mitad en cada paso; mil elementos toman diez comparaciones.
- Conteo de palabras con mapaCuenta frecuencias de palabras en un mapa, la tabla hash integrada de Go.
Cadenas y formato
- El paquete stringsRecortar, dividir, unir y construir texto.
- Runas, bytes y cadenasUna cadena es bytes; recorrerla con range produce runas, y no son lo mismo.
- Construir cadenasConcatenar en un bucle asigna memoria cada vez; un Builder no.
- Los verbos de fmtEl verbo decide cómo se muestra: valor, citado, tipo o sintaxis de Go.
- Invertir una cadenaInvierte por runas y no por bytes, la única forma que funciona fuera de ASCII.
Bis
- lines.goContar líneas, palabras y bytes como wc, para archivos o stdin.