गो में स्लाइस को ट्रैवर्स करने में अक्सर उनके तत्वों को पुनर्व्यवस्थित करना शामिल होता है। किसी आइटम को सीधे एक स्थान से दूसरे स्थान पर ले जाने का प्रयास करने से अप्रत्याशित परिणाम हो सकते हैं, जैसा कि दिए गए कोड स्निपेट में दिखाया गया है:
slice := []int{0,1,2,3,4,5,6,7,8,9}
indexToRemove := 1
indexWhereToInsert := 4
slice = append(slice[:indexToRemove], slice[indexToRemove 1:]...)
newSlice := append(slice[:indexWhereToInsert], 1)
slice = append(newSlice, slice[indexWhereToInsert:]...)
यह दृष्टिकोण आइटम को इंडेक्सटूरेमूव पर इंडेक्सव्हेयरटूइन्सर्ट में स्थानांतरित करने का इरादा रखता है, लेकिन आउटपुट स्थानांतरित आइटम की दो प्रतियां प्रदर्शित करता है। त्रुटि आइटम को हटाने और डालने के तरीके में है। आइए एक वैकल्पिक दृष्टिकोण तलाशें:
आइटम हेरफेर के लिए कस्टम फ़ंक्शंस का उपयोग करना
स्लाइस को मैन्युअल रूप से संशोधित करने के बजाय, हम सम्मिलन और हटाने के लिए समर्पित फ़ंक्शन बना सकते हैं:
func insertInt(array []int, value int, index int) []int {
return append(array[:index], append([]int{value}, array[index:]...)...)
}
func removeInt(array []int, index int) []int {
return append(array[:index], array[index 1:]...)
}
आइटम को परिशुद्धता के साथ ले जाना
इन सहायक कार्यों के साथ, किसी आइटम को ले जाना सीधा है:
func moveInt(array []int, srcIndex int, dstIndex int) []int {
value := array[srcIndex]
return insertInt(removeInt(array, srcIndex), value, dstIndex)
}
नमूना कार्यान्वयन और आउटपुट
func main() {
slice := []int{0,1,2,3,4,5,6,7,8,9}
fmt.Println("Original slice:", slice)
slice = insertInt(slice, 2, 5)
fmt.Println("After insertion:", slice)
slice = removeInt(slice, 5)
fmt.Println("After removal:", slice)
slice = moveInt(slice, 1, 4)
fmt.Println("After moving:", slice)
}
आउटपुट:
Original slice: [0 1 2 3 4 5 6 7 8 9] After insertion: [0 1 2 3 4 2 5 6 7 8 9] After removal: [0 1 2 3 4 5 6 7 8 9] After moving: [0 2 1 3 4 5 6 7 8 9]
यह दृष्टिकोण आइटम को इंडेक्स 1 से इंडेक्स 4 में सही ढंग से स्थानांतरित करता है, जिसके परिणामस्वरूप अपेक्षित आउटपुट मिलता है।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3