Sobes.tech
Junior — Middle

Hogyan növelhető meg a függvénybe átadott szelet mérete egy programozási nyelvben?

sobes.tech MI

Válasz az MI-től

Go nyelvben a szelet (slice) egy olyan struktúra, amely egy mutatót tartalmaz egy tömbre, egy hosszúságra és egy kapacitásra. Ha növelni szeretnéd egy függvénybe átadott szelet méretét, az alábbiakat teheted:

  • A szeletet érték szerint add át, de a függvényen belül hozz létre egy új szeletet, amelynek hosszúságát vagy kapacitását a append függvény segítségével növeled.
  • Ha magát a szeletet szeretnéd módosítani (például a hosszát növelni), és a változások kívülről is látszódjanak, akkor mutatóval (*[]T) adhatod át, így a függvényen belül át tudod írni a szeletet.

Példa a szelet bővítésére függvényen belül, új szelet visszaadásával:

func extendSlice(s []int, n int) []int {
    // Nullementes elemek hozzáadása
    s = append(s, make([]int, n)...) 
    return s
}

func main() {
    s := []int{1, 2, 3}
    s = extendSlice(s, 2)
    fmt.Println(s) // [1 2 3 0 0]
}

Ha a függvény módosítja a szeletet anélkül, hogy vissza kellene adni, akkor mutatót használhatsz:

func extendSlicePtr(s *[]int, n int) {
    *s = append(*s, make([]int, n)...) 
}

func main() {
    s := []int{1, 2, 3}
    extendSlicePtr(&s, 2)
    fmt.Println(s) // [1 2 3 0 0]
}

Így a szelet méretének növeléséhez a függvényen belül vagy új szeletet kell visszaadni, vagy mutatóval kell átadni a szeletet.