एक स्लाइस का अंतिम तत्व कैसे प्राप्त करें?


167

एक टुकड़ा के अंतिम तत्व को निकालने के लिए गो रास्ता क्या है?

var slice []int

slice = append(slice, 2)
slice = append(slice, 7)

slice[len(slice)-1:][0] // Retrieves the last element

उपरोक्त समाधान काम करता है, लेकिन अजीब लगता है।

जवाबों:


297

केवल एक स्लाइस के अंतिम तत्व को पढ़ने के लिए:

sl[len(sl)-1]

इसे हटाने के लिए:

sl = sl[:len(sl)-1]

इस पेज पर देखें स्लाइस ट्रिक्स


34
बहुत बहुत धन्यवाद! हालांकि यह मूर्खतापूर्ण लगता है कि उन्होंने -1सूचकांक जोड़ा नहीं है पायथन ने ...
मॉर्गन वाइल्ड

3
मैं -1पायथन से पसंद करता हूं , हालांकि यह अक्सर हार्ड-टू-डीबग त्रुटियों को जन्म देता है।
weberc2

11
उन्होंने इसे सचेत रूप से बाहर छोड़ दिया। यह गैर-स्पष्ट था और त्रुटियों के लिए प्रवण था। कुल मिलाकर 'बहुत अधिक अर्थ' के बारे में चौकस है; इसमें मेथड / ऑपरेटर ओवरलोडिंग, फंक्शन परम के लिए डिफॉल्ट मान आदि की सुविधा नहीं है, जो IMHO एक समान दार्शनिक नस में जाता है। इस चर्चा और अन्य को देखें: group.google.com/forum/# ​​.topic
टोनी कॉर्डेनस

2
मुझे यकीन नहीं है लेकिन मुझे मिल गया panic: runtime error: index out of rangeहै profiles[len(profiles)-1].UserId, मुझे लगता है कि स्लाइस की लंबाई 0 है इसलिए यह पैनिक है?
tom10271

@ tom10271 हां, यदि ऐसा कोई तत्व नहीं है, तो आपको एक स्लाइस का अंतिम तत्व नहीं मिल सकता है। अगर कोई तत्व नहीं हैं।
टोनी कॉर्डेनस

-10

थोड़ा कम सुरुचिपूर्ण लेकिन यह भी कर सकते हैं:

sl[len(sl)-1: len(sl)]

3
यह वैसा ही है sl[len(sl)-1:], लेकिन यह केवल पिछले तत्व के बजाय, अंतिम तत्व से युक्त एक टुकड़ा देता है । play.golang.org/p/kcThrqa-64c
विक्टर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.