Sobes.tech
Senior

// 4-savol. ekraningizda nima chiqadi package main import "fmt" func subis(is []int) []int { return append(is, 5) } func main() { is := []int{1, 2, 3, 4} subis(is[2:3]) fmt.Println(is) }

sobes.tech AI

AIdan javob

Ushbu kodda [1, 2, 3, 4] elementlari bilan is nomli kesim yaratiladi. So'ng, is[2:3] argumenti bilan subis funksiyasi chaqiriladi, ya'ni faqat 3 elementini o'z ichiga olgan kesim.

subis funksiyasi, o'tkazilgan kesimga 5 elementini qo'shish orqali yangi kesim qaytaradi. Biroq, subis chaqiruvining natijasi hech qayerga saqlanmaydi, shuning uchun asl is kesimi o'zgarmaydi.

Dastur chiqishi quyidagicha bo'ladi:

[1 2 3 4]

Tushuntirish:

  • Go'da kesimlar (slices) arrayga ishora qiluvchi ko'rsatkich, uzunlik va sig'imni o'z ichiga olgan tuzilmalardir.
  • is[2:3] yangi uzunligi 1 bo'lgan kesim yaratadi, u arraydagi 3 elementiga ishora qiladi.
  • append mavjud sig'im bo'lsa, original arrayni o'zgartirishi mumkin, ammo natija tayinlanmaganligi uchun o'zgarishlar saqlanmaydi.
  • Asl is kesimi o'zgarmas qoladi.