Generar cadena aleatoria de longitud fija en Golang

Jay Singh 26 agosto 2022 Go Go String
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
¿Disfrutas de nuestros tutoriales? Suscríbete a DelftStack en YouTube para apoyarnos en la creación de más guías en vídeo de alta calidad. Suscríbete

Artículo relacionado - Go String