كيفية إرجاع قيم متعددة من دالة في Go وما يمكن استخدامه بدلاً من tuples؟
مرحباً بالجميع! لقد بدأت للتو في تعلم Go بعد Python، وواجهت مشكلة. في Python، كنت أستخدم tuples بشكل متكرر، مثلاً لإرجاع عدة قيم من دالة أو لتجميع زوج من البيانات المرتبطة. على سبيل المثال:
```python
def get_user():
return ("Alice", 30)
name, age = get_user()
```
لكن في Go، لا أجد نوعاً مدمجاً مثل "tuple" أو "pair". في التوثيق مكتوب أن الدالة يمكنها إرجاع قيم متعددة، لكن هذا ليس نفس الشيء تماماً. عندما أحاول فعل شيء مشابه:
```go
func getUser() (string, int) {
return "Alice", 30
}
func main() {
name, age := getUser()
fmt.Println(name, age) // هذا يعمل
}
```
كل شيء جيد طالما أريد تفكيك النتيجة إلى متغيرات. لكن ماذا لو أردت حفظ النتيجة كوحدة واحدة؟ مثلاً، تمريرها إلى دالة أخرى، أو وضعها في slice أو map؟ في Python كنت سأفعل:
```python
users = [("Alice", 30), ("Bob", 25)]
```
في Go، لا أستطيع كتابة `[