Avatar ·

كيفية إنشاء UUID في Go؟ لا توجد دالة مدمجة؟

مرحبًا بالجميع! لقد بدأت للتو في تعلم Go وواجهت مهمة: أحتاج إلى إنشاء معرفات فريدة (UUID) للسجلات في قاعدة البيانات. في Python، اعتدت استخدام `uuid.uuid4()`، أما في Go، فبغض النظر عن بحثي في المكتبة القياسية، لم أجد شيئًا مشابهًا. فقط `crypto/rand` للأرقام العشوائية و `fmt.Sprintf` للتنسيق. حاولت كتابة تطبيقي الخاص — فقط إنشاء 16 بايت عشوائي ووضع الشرطات يدويًا، كما في تنسيق UUID القياسي. لكن، أولاً، يبدو هذا غير أنيق، وثانيًا، لست متأكدًا من أن البايتات ستتوافق مع إصدار UUID 4 (عشوائي). الكود الخاص بي: ```go package main import ( "crypto/rand" "fmt" ) func main() { b := make([]byte, 16) _, err := rand.Read(b) if err != nil { panic(err) } uuid := fmt.Sprintf("%x-%x-%x-%x-%x", b[0:4], b[4:6], b[6:8], b[8:10], b[10:]) fmt.Println(uuid) } ``` هذا الكود يعمل، لكنه لا يضبط الإصدار والبديل الصحيحين لـ UUID (البتات