Avatar ·

هل يمكن تمرير الدوال كمعاملات في Go؟

مرحبًا بالجميع! لقد بدأت للتو في تعلم Go، ولدي سؤال حول العمل مع الدوال. في لغات أخرى، مثل Python أو JavaScript، اعتدت على تمرير الدوال كوسائط لدوال أخرى. هذا مريح جدًا لإنشاء callback's، معالجات الأحداث، أو تنفيذ استراتيجيات الفرز. في Go، واجهت أن الدوال هي كيان منفصل. أحاول كتابة دالة تستقبل دالة أخرى وتطبقها على عناصر مصفوفة، لكن المترجم يشتكي من الكود الخاص بي. إليك ما أحاول فعله: ```go package main import "fmt" func applyToSlice(s []int, fn func(int) int) []int { result := make([]int, len(s)) for i, v := range s { result[i] = fn(v) } return result } func main() { nums := []int{1, 2, 3, 4} // أريد تمرير دالة تضاعف الرقم doubled := applyToSlice(nums, func(x int) int { return x * 2 }) fmt.Println(doubled) } ``` هذا الكود يعمل، لكنني لست