تحويل أنواع الشرائح من الواجهات في 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.([]