sorting - Go: Sort array, dropping elements if error caught in `Less(i, j int)` -


निम्न struct

  प्रकार बिंदु संरचना {datetimeRecorded को देखते हुए Time.Time} // रिटर्न सच है अगर बिंदु तुलना बिंदु से पहले दर्ज किया गया था। // यदि दिनांक समय उपलब्ध नहीं है, तो वापसी झूठी और त्रुटि फ़ंक्शन (p1 प्वाइंट) रिकॉर्ड किया गया है (पी 2 पॉइंट) (बीनियर बूल, गलती त्रुटि) {if (p1.datetimeRecorded.IsZero ()) || (P2.datetimeRecorded.IsZero ()) {अं = ErrNoDatetime} else {isBefore = p1.datetimeRecorded.Before (p2.datetimeRecorded)} वापसी}  

<कोड मैं क्रमबद्ध करना चाहते हैं > [] बिंदु द्वारा datetimeRecorded विशेषता

मैं निम्नलिखित (जो काम करता है):

  प्रकार ByDatetimeRecorded [] प्वाइंट समारोह (एक ByDatetimeRecorded) लेन () पूर्णांक {वापसी लेन (क)} समारोह (क ByDatetimeRecorded) स्वैप (i, j पूर्णांक) {एक [i], एक [जे] = एक [जे], एक [i]} समारोह (एक ByDatetimeRecorded) कम (i, j पूर्णांक) bool {स्वैप, _: = एक [I] .कॉर्पोरेटेड  / कोड> पकड़ा जाएगा और अंक बदले नहीं होंगे (रिटर्न  false )। 

क्या यह त्रुटि को पकड़ना और इसे सरणी से छोड़ना संभव है? की तरह कुछ:

  समारोह (एक ByDatetimeRecorded) कम (i, j पूर्णांक) bool {स्वैप, अरे: = एक [i] .RecordedBefore (एक [जे]) यदि अं = शून्य { // निकालें तत्व यहां है} वापसी स्वैप}  

1 संपादित करें

मुझे इस बात के बारे में अधिक विशिष्ट होना पड़ सकता है कि क्या तत्व ड्रॉप करने के लिए अधिक अर्थपूर्ण हो सकता है:

  समारोह (एक ByDatetimeRecorded) कम (i, j पूर्णांक) bool {एक [मैं] .datetimeRecorded.IsZero () {ड्रॉप // एक [i]} अगर एक [जे] .datetimeRecorded.IsZero () स्वैप {एक [जे] ड्रॉप //} _: = एक [i] .RecordedBefore (एक [जे]) वापसी स्वैप}  

मानक सॉर्ट पैकेज टुकड़ों से तत्वों को नहीं छोड़ देगा। सॉर्टिंग से पहले स्लाइस के शून्य मान को फ़िल्टर करें।

  i: = 0 for _, p: = श्रेणी अंक {if! P.datetimeRecorded.IsZero () {points [i] = p I ++}} अंक = अंक [: i] सॉर्ट। सर (ByDatetimeRecorded (points))  

Comments

Popular posts from this blog

winforms - C# Form - Property Change -

java - Messages from .properties file do not display UTF-8 characters -

javascript - amcharts makechart not working -