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
appendfü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.