كيفية تنفيذ معاملات اختيارية للدوال في Go؟ (مشابه لـ overloading)
مرحباً بالجميع! لقد بدأت للتو في تعلم Go بعد Java وPython، وواجهت مشكلة تحيرني تماماً.
في اللغات التي أعرفها سابقاً، كان بإمكاني بسهولة تعريف دوال بمعاملات اختيارية. على سبيل المثال، في Python يمكنني كتابة: def connect(host, port=8080, timeout=30). واستدعاؤها كـ connect("localhost")، connect("localhost", 9090) أو connect("localhost", 9090, 60).
الآن أحاول فعل الشيء نفسه في Go. أحتاج إلى كتابة دالة للاتصال بالخادم، حيث يجب أن يكون port و timeout اختياريين. جربت الطريقة الواضحة:
```go
func connect(host string, port int = 8080, timeout int = 30) {
// ... كود الاتصال
}
```
لكن المترجم يعطي خطأ: "syntax error: unexpected =, expecting {". اتضح أنه في Go لا توجد قيم افتراضية للمعاملات.
قرأت أيضاً أنه في Go لا يوجد overloading للدوال. أي لا يمكنني ببساطة إنشاء نسختين من الدالة بعدد مختلف من المعاملات، كما في Java:
```go