u[8] = (u[8] | 0x80) & 0xBF // what's the purpose ?u[6] = (u[6] | 0x40) & 0x4F // what's the purpose ?
这些行将字节 6 和 8 的值限制在特定范围内。
rand.Read返回 range 中的随机字节
0-255,这些字节不是 UUID 的所有有效值。据我所知,这应该对切片中的所有值都进行。
如果您使用的是 linux,您也可以调用
/usr/bin/uuidgen.
package mainimport ( "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



