Generar cadena aleatoria de longitud fija en Golang

Jay Singh 26 agosto 2022
Generar cadena aleatoria de longitud fija en Golang

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

Artículo relacionado - Go String