Avatar ·

تحويل أنواع الشرائح من الواجهات في Go: كيف تحول []interface{} إلى []string؟

مرحباً بالجميع! أنا جديد في Go وواجهت مشكلة تبدو لي غريبة جداً. لدي دالة تستقبل `[]interface{}` (شريحة من الواجهات)، لكنني بحاجة لتمريرها إلى دالة أخرى تتوقع `[]string`. أحاول إجراء تحويل نوع بسيط، لكن المترجم يعطي خطأ. إليك مثال للكود: ```go package main import "fmt" func printStrings(strings []string) { for _, s := range strings { fmt.Println(s) } } func main() { var data []interface{} = []interface{}{"hello", "world", "golang"} // خطأ: cannot use data (type []interface{}) as type []string in argument to printStrings printStrings(data) } ``` أفهم أن `[]interface{}` و `[]string` هما نوعان مختلفان، لكن كل عنصر في `data` هو بالفعل سلسلة نصية! لماذا لا يسمح Go بتحويل شريحة إلى أخرى ببساطة؟ في لغات أخرى مثل Python أو Java، هذا يعمل من خلال تحويل الأنواع. حاولت استخدام `data.([]