Đi có một sự thiếu xác nhận tích hợp rất đáng tiếc. Tôi muốn triển khai theo cách này:Go có tối ưu hóa các tuyên bố nếu không thể truy cập được không?
const ASSERT = true
func SomeFunction() {
if ASSERT && !some_condition_that_should_always_be_true() {
panic("Error message or object.")
}
}
Câu hỏi của tôi sẽ là câu lệnh if được tối ưu hóa nếu tôi xác định const ASSERT = false
?
Thông số di chuyển không thực thi bất kỳ việc xóa mã chết nào. Một triển khai cụ thể là miễn phí để làm như vậy một cách tích cực khi nó thấy phù hợp. – JimB
@JimB http://golang.org/ref/spec#Constant_expressions được đánh giá vào thời gian biên dịch? – Uvelichitel
@Uvelichitel: có, nhưng điều đó không liên quan gì đến việc xóa mã chết. Trình biên dịch vẫn còn miễn phí để rời khỏi khối nếu trong đối tượng được biên dịch. – JimB