Sobes.tech
Junior — Middle

Šta će se desiti sa dužinom i kapacitetom slice-a ako mu dodamo 10 elemenata kada je on inicijalno prazan?

sobes.tech АИ

Одговор од АИ

Ako imate prazan slice u Go-u (dužina i kapacitet su 0), i dodate mu 10 elemenata pomoću funkcije append, onda:

  • Dužina slice-a će biti 10 — broj elemenata koje ste dodali.
  • Kapacitet slice-a će se automatski povećati, obično sa rezervom, da bi se izbegle česte preraspodele memorije. Tačna kapacitet zavisi od implementacije, ali često će biti 16 ili više, da bi mogao da primi nove elemente i da ima rezervu za buduće dodatke.

Primer:

var s []int // prazan slice
s = append(s, make([]int, 10)...) // dodavanje 10 elemenata
fmt.Println(len(s)) // 10
fmt.Println(cap(s)) // >=10, obično 16 ili 20

Na ovaj način, kapacitet se dinamički povećava, efikasno upravljajući memorijom kako slice raste.