Junior — Middle
Mi történik az append metódus hívásakor, és miért ad vissza egy új szeletet?
sobes.tech MI
Válasz az MI-től
Go nyelvben az append metódust arra használják, hogy elemeket adjanak hozzá egy szelethez (slice). Amikor az append-et hívják, a következő történik:
- Ha a szelet kapacitása (capacity) elegendő, az új elem egyszerűen hozzáadásra kerül a meglévő tömbhöz, és egy olyan szeletet ad vissza, amely a frissített tömbre mutat.
- Ha a kapacitás nem elegendő, akkor egy új, megnövelt kapacitású tömb jön létre, a régi elemek másolódnak bele, majd hozzáadódik az új elem.
Ezért az append egy új szeletet ad vissza, mert:
- Kapacitás bővítése esetén egy olyan szeletet ad vissza, amely az új tömbre mutat.
- Ha a kapacitás elegendő, akkor ugyanarra a tömbre mutató szeletet ad vissza, de megnövelt hosszúsággal.
Mindig fontos, hogy az append eredményét újra hozzárendeljük a változóhoz, hogy ne veszítsük el a hivatkozást a frissített szeletre:
s := []int{1, 2, 3}
s = append(s, 4) // s most egy [1 2 3 4] elemeket tartalmazó szeletre mutat
Így az append belsőleg módosíthatja az alap tömböt, és frissíteni kell a hivatkozást rá.