Go hat einen sehr unglücklichen Mangel an integrierten Assertions. Ich möchte, dass sie auf diese Weise implementieren:Optimiert Go nicht erreichbare if-Anweisungen?
const ASSERT = true
func SomeFunction() {
if ASSERT && !some_condition_that_should_always_be_true() {
panic("Error message or object.")
}
}
Meine Frage wird die if-Anweisung, wenn ich const ASSERT = false
definieren optimiert werden aus?
Die Go-Spezifikation erzwingt keine Entfernung von toten Codes. Eine bestimmte Implementierung kann dies so aggressiv tun, wie sie es für richtig hält. – JimB
@ JimB http://golang.org/ref/spec#Constant_expressions zur Kompilierzeit ausgewertet? – Uvelichitel
@Uvelichitel: Ja, aber das hat nichts mit dem Entfernen von toten Codes zu tun. Der Compiler kann weiterhin den if-Block im kompilierten Objekt belassen. – JimB