[解決済み] go言語でUUIDを生成する方法はありますか?
2022-03-06 09:25:01
質問
次のようなコードがあります。
u := make([]byte, 16)
_, err := rand.Read(u)
if err != nil {
return
}
u[8] = (u[8] | 0x80) & 0xBF // what does this do?
u[6] = (u[6] | 0x40) & 0x4F // what does this do?
return hex.EncodeToString(u)
長さ32の文字列が返ってきますが、有効なUUIDとは思えません。もしそれが本物のUUIDなら、なぜそれがUUIDなのか、そしてその値を変更するコードの目的は何なのか
u[8]
と
u[6]
.
UUIDの生成にもっと良い方法はないのでしょうか?
どのように解決するのですか?
u[8] = (u[8] | 0x80) & 0xBF // what's the purpose ?
u[6] = (u[6] | 0x40) & 0x4F // what's the purpose ?
これらの行は、6バイト目と8バイト目の値を特定の範囲にクランプしています。
rand.Read
の範囲でランダムなバイトを返します。
0-255
これはUUIDとして有効な値ではありません。私の知る限り、これはスライス内のすべての値に対して実行されるべきですが。
linux の場合は、代わりに
/usr/bin/uuidgen
.
package main
import (
"fmt"
"log"
"os/exec"
)
func main() {
out, err := exec.Command("uuidgen").Output()
if err != nil {
log.Fatal(err)
}
fmt.Printf("%s", out)
}
という結果が得られる。
$ go run uuid.go
dc9076e9-2fda-4019-bd2c-900a8284b9c4
関連
-
[解決済み] go mod vendor` コマンドの目的は何ですか?
-
[解決済み] GUID / UUIDの作成方法
-
[解決済み] GUIDとUUIDの違いは何ですか?
-
[解決済み] PythonでGUID/UUIDを作成する方法
-
[解決済み] PostgresでInsert文のUUIDを生成する?
-
[解決済み】v4 UUIDを生成するPHP関数
-
[解決済み】Goの構造体のスタックとヒープ割り当て、およびガベージコレクションとの関連性
-
[解決済み】インターフェースのスライスを変換するタイプ
-
[解決済み] v5のUUIDを生成しています。名前と名前空間とは何ですか?
-
[解決済み】UUIDはどのようにユニークなのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] golang の "go get" コマンドで "go: missing Git command" というエラーが表示される。
-
[解決済み] Go パッケージは log.Fatal を使うべきですか、そしてそれはいつですか?
-
[解決済み] go get でパッケージをインストールするにはどうしたらいいですか?
-
[解決済み] go言語でUUIDを生成する方法はありますか?
-
[解決済み] go getコマンドとgo mod downloadコマンドの違いは何ですか?
-
[解決済み] go get を使って特定のバージョンのパッケージをインポートするにはどうすればよいですか?
-
[解決済み] デュレーションと整数を掛け合わせる方法は?
-
[解決済み] GOPATHとGOROOTの値はどうすればよいですか?
-
[解決済み】チャンネルを開いたままにしておいてもいいのでしょうか?
-
[解決済み】スライスの最後の要素を取得する方法は?