ホームページ >バックエンド開発 >Golang >Golang でカスタムの長さと一意性を持つランダムな文字列を生成するにはどうすればよいですか?

Golang でカスタムの長さと一意性を持つランダムな文字列を生成するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-10-25 07:58:02844ブラウズ

How to Generate Random Strings with Custom Length and Uniqueness in Golang?

Golang で指定された長さの一意のランダム文字列を生成する

質問: Golang を使用して、指定された範囲内で一意の長さは決まりますか?

答え:

一意性レベルの定義

一意性のレベルは、特定の要件。真に普遍的に一意の文字列については、グローバルに一意の識別子を提供する UUID を検討してください。 UUID は 122 のランダム ビットで構成され、32 文字の 16 進表現になります。

UUID の表示

UUID はさまざまな形式で表示できます:

  • 16 進数: 0 ~ 9 および A ~ F からなる 32 文字
  • 10 進数: 0 ~ 9 からなる 13 文字 (1 つの文字数によって制限される)小数点以下の桁)

擬似ランダム文字列の生成

普遍的に一意ではない擬似ランダム文字列の場合、次のアプローチを使用できます。

  • 暗号化ランダム バイト: rand.Read() を使用してランダムなバイト配列を生成し、それを 16 進文字列としてエンコードします。
<code class="go">package main

import (
    "crypto/rand"
    "fmt"
)

func main() {
    n := 10
    b := make([]byte, n)
    if _, err := rand.Read(b); err != nil {
        panic(err)
    }
    s := fmt.Sprintf("%X", b)
    fmt.Println(s)
}</code>

このメソッド特定の一意性が保証されていないランダムな文字列を提供します。

追加の考慮事項:

  • Golang 文字列は UTF-8 でエンコードされ、幅広い文字を使用できます。 .
  • Unicode は、より長く一意の文字列を生成するための十分なコード ポイントを提供します。
  • UUID は、普遍的に一意の文字列を生成するための推奨オプションです。
  • 擬似ランダム文字列の場合、長さは文字列のランダム性と一意性のレベルに直接影響します。

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

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