Follow

Follow

Generate a random string in go language!

Maheshwar Ligade's photo
Maheshwar Ligade
·Apr 29, 2023·

3 min read

Play this article

Table of contents

  • Introduction:
  • Method 1: Using the Math/rand package
  • Method 2: Using the Crypto/rand package
  • Conclusion:

Introduction:

Generating random strings is a common task in software development, and Go provides several ways to accomplish this task. In this article, we will explore different methods to generate random strings in Go.

Method 1: Using the Math/rand package

The math/rand package in Go provides functions for generating pseudo-random numbers. We can use this package to generate a random string by selecting a random character from a given set of characters.

Here is an example code that generates a random string using the math/rand package:

package main

import (
    "fmt"
    "math/rand"
    "time"
)

var letters = []rune("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ")

func RandStringRunes(n int) string {
    rand.Seed(time.Now().UnixNano())
    b := make([]rune, n)
    for i := range b {
        b[i] = letters[rand.Intn(len(letters))]
    }
    return string(b)
}

func main() {
    fmt.Println(RandStringRunes(10))
}

In the above code, we have defined a variable called letters that contains all the possible characters that can be used to generate the random string. We have also defined a function called RandStringRunes that takes an integer n as an input and returns a random string of length n.

The function works by generating a random number between 0 and the length of the letters array using the rand.Intn() function. It then selects the character at that index from the letters array and appends it to the result string.

Method 2: Using the Crypto/rand package

The crypto/rand package in Go provides functions for generating cryptographically secure random numbers. We can use this package to generate a random string that is more secure than the one generated by the math/rand package.

Here is an example code that generates a random string using the crypto/rand package:

package main

import (
    "crypto/rand"
    "encoding/base64"
    "fmt"
)

func RandStringBytes(n int) (string, error) {
    b := make([]byte, n)
    _, err := rand.Read(b)
    if err != nil {
        return "", err
    }
    return base64.URLEncoding.EncodeToString(b)[:n], nil
}

func main() {
    s, err := RandStringBytes(10)
    if err != nil {
        fmt.Println("error:", err)
        return
    }
    fmt.Println(s)
}

In the above code, we have defined a function called RandStringBytes that takes an integer n as an input and returns a random string of length n.

The function works by generating n random bytes using the rand.Read() function. It then encodes these bytes using base64.URLEncoding.EncodeToString() function and returns the first n characters of the encoded string.

Conclusion:

In this article, we have explored two different methods for generating random strings in Go. The first method uses the math/rand package to generate a pseudo-random string, while the second method uses the crypto/rand package to generate a cryptographically secure random string. Depending on the use case, you may need to use one or the other.

I hope this helps, you!!

More such articles:

https://medium.com/techwasti

https://www.youtube.com/channel/UCiTaHm1AYqMS4F4L9zyO7qA

https://www.techwasti.com/

\==========================**=========================

If this article adds any value to you then please clap and comment.

Let’s connect on Stackoverflow, LinkedIn, & Twitter.

Did you find this article valuable?

Support techwasti by becoming a sponsor. Any amount is appreciated!

See recent sponsors Learn more about Hashnode Sponsors
 
Share this