Avatar ·

كيف تتحقق مما إذا كانت البنية (struct) فارغة في Go؟ (بنية فارغة، مقارنة بـ nil)

مرحبًا بالجميع! لقد بدأت للتو في تعلم Go وواجهت مشكلة. لدي بنية (struct) يتم إرجاعها من دالة. أحيانًا تكون فارغة (جميع الحقول بقيم صفرية) وأحيانًا تكون ممتلئة. أحتاج إلى التحقق مما إذا كانت فارغة لتجنب معالجتها. في لغات أخرى، اعتدت التحقق من `null` أو `None`. في Go، جربت المقارنة مع `nil`: ```go type User struct { Name string Age int } func getUser() User { // ... بعض المنطق return User{} } u := getUser() if u == nil { fmt.Println("فارغ") } ``` لكن المترجم يشتكي: `cannot convert nil to type User`. أدركت أن البنيات ليست مؤشرات، و `nil` لا ينطبق عليها. ثم جربت المقارنة مع بنية فارغة: ```go if u == User{} { fmt.Println("فارغ") } ``` لكن هذا لا يعمل أيضًا إذا كانت البنية تحتوي على حقول من نوع slice أو map، لأنه لا يمكن مقارنتها باستخدام `==`. كيف يمكنني التحقق بشكل صحيح وidiomatic مما إذا كانت البنية فارغة في Go؟ هل هناك طريقة؟