क्या Go में assert का उपयोग किया जा सकता है? या यह बुराई है, जैसे C++ के बारे में कहा जाता है?
सभी को नमस्ते! मैं Go में नया हूँ, C++ से आया हूँ। वहाँ मैं अक्सर precondition और invariants की जाँच के लिए assert() का उपयोग करता था — उदाहरण के लिए, कि pointer nil नहीं है, कि 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 से बंद किया जा सकता है, और यह छिपे हुए bugs की ओर ले जाता है।
अब मैं उलझन में हूँ। एक तरफ, C++ में assert