ホームページ  >  記事  >  バックエンド開発  >  Golang で特定の長さの一意のランダム文字列を生成するにはどうすればよいですか?

Golang で特定の長さの一意のランダム文字列を生成するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-10-24 17:21:02850ブラウズ

How Do I Generate Unique Random Strings of a Specific Length in Golang?

Golang を使用した長さの範囲内で一意のランダム文字列の生成

Golang では、範囲内で一意のランダム文字列を作成する必要があるシナリオに遭遇することがあります。特定の長さの範囲。 「一意」という用語にはさまざまな解釈がある可能性がありますが、特定のプロパティを持つランダムな文字列を生成する戦略について詳しく説明します。

普遍的に一意

グローバルに一意の識別子が必要な場合、Universally Unique Identifier (UUID) の利用を検討してください。 UUID は 128 ビット値であり、16 進数形式で表示できるため、32 文字の文字列になります。 Golang の UUID に関する詳しい情報と実装の詳細については、こちらをご覧ください: https://en.wikipedia.org/wiki/Universally_unique_identifier

文字エンコーディング

Golang では、文字列は UTF-8 でエンコードされます。つまり、各文字がメモリ内で複数バイトを占有する可能性があります。バイトではなく文字で特定の長さが必要な場合は、文字エンコーディングの影響に留意してください。 Unicode には、活用できる文字の膨大なレパートリーが用意されています。

ランダム バイト配列

バイト配列を使用して擬似ランダム文字列を生成するには、次のものを利用できます。アプローチ:

<code class="go">import (
    "crypto/rand"
    "fmt"
)

const length = 10

func main() {
    b := make([]byte, length)
    if _, err := rand.Read(b); err != nil {
        panic(err)
    }

    s := fmt.Sprintf("%X", b)
    fmt.Println(s)
}</code>

このコードは、長さ 10 バイトの配列を生成し、それを 16 進文字列に変換し、結果を出力します。

結論

一意性と長さに関する特定の要件に応じて、上で説明したオプションから適切な戦略を選択できます。グローバルに一意な識別子については、UUID が広く認識されたソリューションを提供します。特定の長さの擬似ランダム文字列の場合、ランダムなバイト配列を 16 進文字列に変換することが有効な方法です。

以上がGolang で特定の長さの一意のランダム文字列を生成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。