slices.Replace în Go

Înlocuiește elementele s[i:j] cu valorile date (oricâte) și returnează slice-ul rezultat.

Sintaxă
import "slices"

func Replace[S ~[]E, E any](s S, i, j int, v ...E) S

Ce face slices.Replace

slices.Replace(s, i, j, v...) scoate elementele de pe pozițiile i..j-1 și pune în locul lor valorile v. Numărul de valori noi poate fi diferit de cel al elementelor scoase, deci slice-ul se poate lungi sau scurta.

Este echivalentul unui Delete urmat de un Insert la aceeași poziție. Ca și ele, returnează slice-ul nou, care trebuie atribuit.

Parametri

Parametru Descriere
s Slice-ul.
i, j Intervalul înlocuit, [i, j).
v Valorile noi.

Ce returnează

Slice-ul cu înlocuirea făcută.

Exemple

Exemplul 1: Înlocuirea unor elemente

package main

import (
    "fmt"
    "slices"
)

func main() {
    traseu := []string{"Iași", "Vaslui", "Bârlad", "Galați"}
    traseu = slices.Replace(traseu, 1, 3, "Roman", "Bacău", "Focșani")
    fmt.Println(traseu)

    note := []int{5, 6, 7, 8, 9}
    note = slices.Replace(note, 1, 4, 10)
    fmt.Println(note)
}

Rezultat

[Iași Roman Bacău Focșani Galați]
[5 10 9]

Greșeli frecvente

  • Crezi că j este numărul de elemente înlocuite: este poziția de final (exclusă), ca la s[i:j].

Comenzi înrudite

  • slices.Insert: Inserează una sau mai multe valori la poziția i și returnează slice-ul rezultat.
  • slices.Delete: Delete șterge elementele s[i:j]; DeleteFunc șterge toate elementele care îndeplinesc o condiție. Ambele returnează slice-ul nou.