Eu fazia isso em C++, pilhas, arrays e listas que podiam receber mais elementos, mas somente realocava memória a cada 10, 20 elementos, para não ficar lento. Tinha gente que não entendia.
Fazendo alguns testes (Me corrijam se eu estiver errado) notei que o slice dobrava de tamanho apenas na primeira vez, depois que você ultrapassa o tamanho pela segunda vez, ele apenas adiciona mais uma única posição. Meu código teste: package main import "fmt" func main() { // 3 de length e 6 de capacity slice := make([]int, 3, 4) slice[0], slice[1], slice[2] = 10, 20, 30 slice = append(slice, 40, 50, 60, 65, 70, 75) fmt.Print(slice, cap(slice)) } Resposta no console: [10 20 30 40 50 60 65 70 75] 10
O padrão e dobrar a memória até 1000 posições, após isso ele aumenta de 25%, o que acontece que tem mais regras para otimizar uso espaço e velocidade, e compilador é adaptativo, como era para criar um array de 9 elementos e o dobro era 8, ele arredondou para 10.
Pô eu sou muito curioso, queria saber o que eram os barulhos na sala... kkkkkkkkkkkkkkkkkkkk
KKKKK
Eu fazia isso em C++, pilhas, arrays e listas que podiam receber mais elementos, mas somente realocava memória a cada 10, 20 elementos, para não ficar lento. Tinha gente que não entendia.
estou empolgado
Fazendo alguns testes (Me corrijam se eu estiver errado) notei que o slice dobrava de tamanho apenas na primeira vez, depois que você ultrapassa o tamanho pela segunda vez, ele apenas adiciona mais uma única posição.
Meu código teste:
package main
import "fmt"
func main() {
// 3 de length e 6 de capacity
slice := make([]int, 3, 4)
slice[0], slice[1], slice[2] = 10, 20, 30
slice = append(slice, 40, 50, 60, 65, 70, 75)
fmt.Print(slice, cap(slice))
}
Resposta no console:
[10 20 30 40 50 60 65 70 75] 10
O padrão e dobrar a memória até 1000 posições, após isso ele aumenta de 25%, o que acontece que tem mais regras para otimizar uso espaço e velocidade, e compilador é adaptativo, como era para criar um array de 9 elementos e o dobro era 8, ele arredondou para 10.
hoje da erro , se colocar ./prog.go:7:53: assignment mismatch: 5 variables but 4 values