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



