Avatar ·

क्या Go में map पर iteration के दौरान elements को हटाना सुरक्षित है?

सभी को नमस्ते! मैंने अभी-अभी Go सीखना शुरू किया है और map के साथ काम करते समय एक अप्रत्याशित व्यवहार का सामना किया। मुझे map के सभी elements पर जाना है और उन्हें हटाना है जो किसी विशेष शर्त को पूरा नहीं करते। अन्य भाषाओं (जैसे Python) में, iteration के दौरान dictionary को बदलने से अक्सर errors या undefined behavior होता है। मैंने यह कोड लिखा:\n\n```go\npackage main\n\nimport "fmt"\n\nfunc main() {\n m := map[int]string{\n 1: "apple",\n 2: "banana",\n 3: "cherry",\n 4: "date",\n }\n\n for k, v := range m {\n if v == "banana" || v == "date" {\n delete(m, k)\n }\n }\n\n fmt.Println(m)\n}\n```\n\nकोड काम करता है और आउटपुट देता है `map[1:apple 3:cherry]`। लेकिन मुझे यकीन नहीं है कि यह सुरक्षित है। क्या इससे panic, data race या कोई अन्य समस्या हो सकती है?