क्या Go में assert का उपयोग किया जा सकता है? या यह बुराई है, जैसे C++ के बारे में कहा जाता है?
सभी को नमस्ते! मैं Go में नौसिखिया हूँ, C++ से आया हूँ। वहाँ मैं अक्सर precondition और invariant की जाँच के लिए assert() का उपयोग करता था — उदाहरण के लिए, कि pointer null नहीं है, कि index array की सीमा में है, या कि object की state सही है। यह debugging में बहुत मदद करता था।
मैंने Go में लिखना शुरू किया और देखा कि standard library में कोई assert function नहीं है। बेशक, testing package है, लेकिन वह केवल tests के लिए है। Production code में मैंने अपनी जाँचें लिखनी शुरू कीं, जैसे:
```go
if somePtr == nil {
panic("somePtr is nil, यह bug है!")
}
```
लेकिन एक सहकर्मी ने कहा कि यह भयानक style है, और Go में errors return करना आम है, panic नहीं करना। उसने C++ का उदाहरण दिया, जहाँ assert की अक्सर आलोचना की जाती है क्योंकि इसे NDEBUG macro से बंद किया जा सकता है, और यह hidden bugs की ओर ले जाता है।
अब मैं उलझन में हूँ। एक तरफ, C++ में assert