Назад к задачам
Junior — Senior
6

Исследование поведения slice и функции append

Получайте помощь с лайвкодингом в реальном времени с Sobes Copilot
Условие задачи

Определите, какой вывод получит программа в каждом месте вызова Println, учитывая детали работы функции append, срезов и их ёмкости.

package main

import "fmt"

func main() {
 slice := make([]string, 0, 5)
 slice = append(slice, "0")
 slice = append(slice, "1")
 slice = append(slice, "2")
 slice = append(slice, "3")
 fmt.Println(slice, len(slice), cap(slice)) // ?

 addToSlice1(slice)
 fmt.Println(slice, len(slice), cap(slice)) // ?

 addToSlice2(slice)
 fmt.Println(slice, len(slice), cap(slice)) // ?
}

func addToSlice1(slice []string) {
 slice = append(slice[:1:1], "one")
}

func addToSlice2(slice []string) {
 slice = append(slice, "two")
}