كيفية حذف عنصر من slice في Golang؟ الطرق الصحيحة والمزالق
مرحباً بالجميع! لقد بدأت للتو في تعلم Go وواجهت مشكلة أثناء العمل مع slices. أحتاج إلى حذف عنصر حسب الفهرس من slice، لكنني لا أجد دالة مدمجة لذلك.
إليك مثال على الكود الخاص بي:
```go
package main
import "fmt"
func main() {
fruits := []string{"apple", "banana", "cherry", "date"}
// أريد حذف "banana" (الفهرس 1)
// كيف أفعل ذلك بشكل صحيح؟
fmt.Println(fruits)
}
```
حاولت ببساطة تعيين nil للعنصر، لكن هذا لا يحذفه من slice، بل يجعله فارغاً فقط:
```go
fruits[1] = "" // لا يعمل كحذف
```
ثم حاولت عمل slice بدون العنصر المطلوب، لكن هذا ينشئ slice جديداً، بينما يبقى الأصلي:
```go
newFruits := append(fruits[:1], fruits[2:]...)
// الآن fruits = ["apple", "cherry", "date", "date"] — غريب، أليس كذلك؟
```
الـ slice الأصلي تغير أيضاً، وظهر تكرار للعنصر الأخير! لماذا يحدث هذا؟ كيف أحذف عنصراً من slice بشكل صحيح دون أن...