Variadic Functions
Variadik funksiyalar
Siz allaqachon fmt.Println(a, b, c) kabi chaqiruvlarni ko'plab marta yozgansiz — bir nechta argumentni bittadek qabul qiladigan funksiya. Bu variadik funksiya: parametr turi oldida ... bilan belgilanadi, va chaqiruvchi istalgan sondagi argument (nolta ham) uzatishi mumkin.
func Sum(nums ...int) int {
total := 0
for _, n := range nums {
total += n
}
return total
}
Sum(1, 2, 3) // alohida argumentlar
Sum() // hech qanday argumentsiz ham ishlaydiFunksiya ichida nums oddiy []int slice sifatida ko'rinadi — Composite Types kursida ko'rgan barcha slice operatsiyalari (range, len, indekslash) unda ishlaydi. Agar sizda allaqachon slice bo'lsa-yu, uni alohida argumentlarga "yoyib" uzatmoqchi bo'lsangiz, yoyish operatori (...) chaqiruv joyida ham ishlatiladi:
nums := []int{4, 5, 6}
Sum(nums...) // slice'ni argumentlarga "yoyadi">_ Exercise
Sum(nums ...int) int variadik funksiyasini yozing — u berilgan barcha sonlarning yig'indisini qaytaradi. mainda uni ikki xil tarzda chaqiring: alohida argumentlar bilan (Sum(1, 2, 3)) va mavjud slice'ni yoyib (Sum(nums...)).
Stuck? Reveal a hint to help you.
Key Takeaway
Key Takeaway:
Variadik parametr (...T) funksiyaga istalgan sondagi argumentni qabul qilish imkonini beradi va funksiya ichida oddiy slice sifatida ishlaydi. Xuddi shu ... belgisi chaqiruv joyida mavjud slice'ni alohida argumentlarga "yoyish" uchun ham ishlatiladi.
NEXT UP
Named Return Values
$ go run main.go
Kodingizni ishga tushiring