ฉันมีรหัสที่มีลักษณะดังนี้:
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 หรือไม่?