algorithms · go · data-structures · technical-interview
Suma de números naturales — un primer paso en algoritmos con Go
Foto de Susan Holt Simpson en Unsplash
A lo largo de mi camino en entrevistas técnicas, he notado una escasez de ejemplos de Data Structures and Algorithms (DSA) hechos en Go. Como Go se ha vuelto cada vez más demandado y he estado estudiándolo a fondo, decidí migrar mi serie de DSA de JavaScript/TypeScript a Go. La sintaxis elegante de Go hace que esta transición sea emocionante — se siente como explorar un mundo completamente nuevo.
Voy a empezar con un algoritmo súper básico para calentar: la Suma de Números Naturales. Acompáñenme a explorar este algoritmo simple pero efectivo.
Disclaimer: este post asume que se tiene conocimiento básico de Go y que se está preparando para entrevistas de trabajo.
Planteamiento del problema
Dado un entero positivo n, retornar la suma de todos los números naturales de 1 a n.
Desglosando el planteamiento del problema, tenemos: una entrada (un entero positivo), la lógica requerida (sumar todos los números naturales) y una salida (el entero resultante de la suma). Usemos esta estructura para definir nuestro algoritmo.
Cómo resolverlo
Si se han leído mis posts anteriores sobre DSA, ya se sabe que prefiero un enfoque directo: explicar primero el planteamiento del problema, luego el algoritmo para resolverlo y finalmente la implementación.
Ahora, continuemos. El primer paso es manejar la entrada. Necesitamos validar que sea un número positivo, ya que esa es una restricción del planteamiento del problema. Es una validación básica: si el número de entrada (n) es menor que 0, significa que no es positivo, así que retornamos 0.
if n < 0 {
return 0
}
Ahora, declaremos una variable sum donde acumularemos el valor de cada número.
sum := 0
Gracias a la elegancia de Go, podemos crear un loop usando la sintaxis de range. Al declarar una variable i que itera sobre el range de n, estamos creando un loop que corre de 0 a n-1.
for i := range n {}
Go es un lenguaje realmente hermoso. Es importante notar que esta sintaxis solo funciona con Go 1.22 o más reciente. Con versiones anteriores, hay que usar un for loop convencional en su lugar.
for i := 0; i < n; i++ {}
A continuación, sumamos el valor de la iteración actual más 1 a nuestra variable sum, ya que nuestro loop empieza desde 0.
sum += i + 1
Una vez que el loop concluye, simplemente se retorna la suma acumulada.
return sum;
Implementación completa
A continuación se presenta la implementación completa de nuestra solución para sumar números naturales. Al revisarla, noten qué tan concisa y a la vez legible es la sintaxis de Go:
func sumNaturalNumbers(n int) int {
if n < 0 {
return 0
}
sum := 0
for i := range n {
sum += i + 1
}
return sum
}
¡Y listo! Acaban de completar su primera pregunta de entrevista técnica usando Go. Si bien todavía no cubrimos ninguna estructura de datos, este ejemplo sirve como un excelente punto de partida para su camino con DSA en Go.
Reflexiones finales
Aunque este algoritmo es simple, demuestra de forma efectiva las capacidades de Go como lenguaje de programación. Su sintaxis elegante y sus características de rendimiento hacen que Go sea particularmente atractivo tanto para entrevistas técnicas como para aplicaciones del mundo real.
Hay un dicho en las artes: “hay que conocer las reglas para poder romperlas.” De manera similar, para destacar en entrevistas técnicas se necesitan fundamentos sólidos. El mejor enfoque combina un punto de partida claro (como este algoritmo básico), un plan sólido para abordar problemas más complejos y disciplina constante en la práctica. Espero que este ejemplo les ayude en su próxima entrevista técnica y los acerque a conseguir el trabajo que desean.
Pueden encontrar el código de este y otros algoritmos en mi repositorio de GitHub: https://github.com/RubenOAlvarado/algorithms
Sigan aprendiendo, ¡nos vemos en el próximo!