Slide 7 de 37

Vetores

proc main(): void {
	v := ["a", "b", "c"]          // Str[3] — um tamanho estático, inferido
	mut Str[dyn] w = ["a", "b"]    // dinâmico — o único tipo que append aceita
	append(w, "c")

	first := v[0]
	middle := v[0:1]                // slicing, ambos os limites inclusivos
	echo "{first} {middle} {w}"
}
Um vetor é contíguo na memória e homogêneo. Str[3] é estático: exatamente três, sempre. Str[dyn] é dinâmico: não promete nada sobre seu tamanho e é o único tipo sobre o qual append funciona. Str[] é uma grafia só para parâmetros que aceita qualquer um dos dois. Uma variável ou campo precisa dizer qual dos dois tipos reais ela guarda — essa promessa é o que sustenta o verificador de limites. + concatena em um novo vetor; == compara estruturalmente, elemento por elemento.