Go ma bardzo niefortunny brak wbudowanych twierdzeń. Chcę wdrożyć je w ten sposób:Czy Go optymalizuje out nieosiągalne instrukcje if?
const ASSERT = true
func SomeFunction() {
if ASSERT && !some_condition_that_should_always_be_true() {
panic("Error message or object.")
}
}
Moje pytanie brzmi, czy będzie-oświadczenie być optymalizowane, czy mogę zdefiniować const ASSERT = false
?
Specyfikacja go nie wymusza usunięcia martwego kodu. Konkretna implementacja może zrobić to tak agresywnie, jak uważa za stosowne. – JimB
@JimB http://golang.org/ref/spec#Constant_expressions ocenianych podczas kompilacji? – Uvelichitel
@Uvelichitel: tak, ale to nie ma nic wspólnego z usuwaniem martwego kodu. Kompilator może nadal pozostawić blok if w skompilowanym obiekcie. – JimB