كيفية مقارنة هيكلين (struct)، شريحتين (slice) أو خريطتين (map) في Go من حيث التساوي؟
مرحبًا بالجميع! لقد بدأت للتو في تعلم Go وواجهت مشكلة عند مقارنة أنواع البيانات المعقدة. أحاول مقارنة هيكلين (struct)، شريحتين (slice) وخريطتين (map)، لكني أحصل على نتائج غير متوقعة.
إليك مثال على الكود الذي لا يعمل:
```go
package main
import "fmt"
type Person struct {
Name string
Age int
}
func main() {
// مقارنة الهياكل (structs)
p1 := Person{Name: "Alice", Age: 30}
p2 := Person{Name: "Alice", Age: 30}
fmt.Println("هل الهياكل متساوية؟", p1 == p2) // يطبع true، لكن هذا ليس دائمًا صحيحًا
// مقارنة الشرائح (slices)
slice1 := []int{1, 2, 3}
slice2 := []int{1, 2, 3}
// fmt.Println(slice1 == slice2) // خطأ في الترجمة: slice can only be compared to nil
// مقارنة الخرائط (maps)
map1 := map[string]int{"a": 1, "b": 2}
map2 := map[string]int{"a": 1, "b": 2}
// fmt.Println(map1 == map2) // خطأ في الترجمة: map can only be compared to nil
}
```
أفهم أن عامل `==` لا يعمل مع الشرائح والخرائط،