Generar cadena aleatoria de longitud fija en Golang
Jay Singh
26 agosto 2022
Muchos algoritmos diferentes necesitan la producción de cadenas aleatorias de una longitud específica. Este artículo le mostrará cómo producir una cadena aleatoria de una longitud fija en Golang en varios métodos diferentes.
Use math/rand
para generar cadenas aleatorias de longitud fija en Golang
El paquete math/rand
de Go proporciona generación de números pseudoaleatorios. Usaremos el paquete en este ejemplo y pasaremos una cadena aleatoria para recibir el resultado de una cadena de longitud fija.
package main
import (
"fmt"
"math/rand"
)
func main() {
fmt.Println(RandomString(30))
}
func RandomString(n int) string {
var letterRunes = []rune("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ")
b := make([]rune, n)
for i := range b {
b[i] = letterRunes[rand.Intn(len(letterRunes))]
}
return string(b)
}
Producción :
XVlBzgbaiCMRAjWwhTHctcuAxhxKQF
Para otro ejemplo, el método acepta una cadena que contiene cada letra y produce una cadena seleccionando una letra al azar.
package main
import (
"fmt"
"math/rand"
)
func RandomString(n int) string {
var letters = []rune("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789")
s := make([]rune, n)
for i := range s {
s[i] = letters[rand.Intn(len(letters))]
}
return string(s)
}
func main() {
fmt.Println(RandomString(13))
}
Producción :
BpLnfgDsc2WD8
Veamos un último ejemplo para comprender completamente cómo generar una cadena de longitud fija en Golang.
package main
import (
"fmt"
"math/rand"
)
func main() {
fmt.Println("Random String")
fmt.Println()
fmt.Println("11 chars: " + RandomString(11))
fmt.Println("20 chars: " + RandomString(20))
fmt.Println("32 chars: " + RandomString(32))
}
func RandomString(n int) string {
var letter = []rune("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789")
b := make([]rune, n)
for i := range b {
b[i] = letter[rand.Intn(len(letter))]
}
return string(b)
}
Producción :
Random String
11 chars: BpLnfgDsc2W
20 chars: D8F2qNfHK5a84jjJkwzD
32 chars: kh9h2fhfUVuS9jZ8uVbhV3vC5AWX39IV