Slide 9 de 37
Limites, comprovados em tempo de compilação
proc main(): void {
v := ["a", "b", "c"]
last := len(v) - 1
if v bounds last {
echo v[last] // tudo bem — a guarda cobre isso
}
}
Uma passagem dedicada e sensível ao fluxo comprova que todo índice e slice está dentro dos limites antes mesmo do programa rodar. Um índice literal dentro de um tamanho conhecido compila sem mais nada; um índice calculado precisa estar sob uma guarda que a passagem saiba ler, como `if v bounds i { v[i] }` — açúcar sintático para `i >= 0 && i < len(v)`. Tudo que a passagem não conseguir provar seguro é um erro de compilação, não um panic em tempo de execução — `echo v[len(v) - 1]` sozinho já é rejeitado de cara, índice calculado e tudo. Este mesmo servidor se apoia nisso: o número do slide vindo da URL é verificado com exatamente essa guarda antes de indexar a lista de slides.