كيفية تنفيذ المعاملات الاختيارية في الدوال في Go؟ بديل التحميل الزائد من اللغات الأخرى
مرحبًا أيها الزملاء! أنا أنتقل إلى Go من Python وJava، وواجهت مشكلة. في تلك اللغات اعتدت على التحميل الزائد للدوال والمعاملات الاختيارية، حيث يمكن تعيين قيم افتراضية. على سبيل المثال، في Python كنت أكتب:
```python
def create_user(name, age=None, city="Moscow"):
...
```
أما في Go فلا يمكنني ببساطة حذف معامل أو كتابة دالتين بنفس الاسم. أحتاج إلى إنشاء دالة لتسجيل مستخدم، حيث يكون `name` إلزاميًا فقط، بينما `age` و`city` اختياريان.
جربت هذا الكود، لكن المترجم يشتكي:
```go
func CreateUser(name string, age int, city string) {
// إذا لم يتم تمرير age، أريد أن يكون 0
// إذا لم يتم تمرير city، أريد "Moscow"
}
func CreateUser(name string) { // خطأ: CreateUser redeclared
CreateUser(name, 0, "Moscow")
}
```
قرأت الوثائق — لا يوجد تحميل زائد للدوال في Go. رأيت خيارات باستخدام المؤشرات، لكن الكود المستدعي يصبح ضخمًا: `CreateUser("Alex", nil, nil)`. هل هناك حل أفضل؟