# Generate a random string in go language!

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1681563391818/e1e6ca34-c95d-4d0c-ba00-d5de64137d39.png align="center")

### 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:

```go
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:

```go
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](http://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](Link)

[https://www.youtube.com/channel/UCiTaHm1AYqMS4F4L9zyO7qA](Link)

[https://www.techwasti.com/](Link)

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

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

**Let’s connect on** [**Stackoverflow**](http://stackoverflow.com/users/3187349/maheshwar-ligade)**,** [**LinkedIn**](https://in.linkedin.com/in/maheshwar-ligade-14447841)**, &** [**Twitter**](https://twitter.com/MaheshwarLigade)**.**
