Variadic Function
Variadic function adalah sebuah function yang dapat menerima sejumlah variabel sebagai argumen. Argument ini disebut sebagai varargs. Dalam sebuah function, parameter yang berada di posisi terakhir dapat dijadikan sebagai varargs. Varargs berbeda dengan tipe data array. Pada parameter yang bertipe array, kita harus membuat array terlebih dahulu sebelum dikirimkan sebagai argument, sedangkan varargs kita bisa mengirimkan banyak data hanya dengan memisahkannya menggunakan tanda koma.
Membuat Variadic Function
Variadic function sebenarnya hanya sebuah function seperti pada umumnya oleh karena itu cara membuatnya juga sama seperti membuat function biasa. Hanya saja, kita menambahkan parameter yang bertipe varargs ke function tersebut. Varargs memiliki ciri yaitu diawali dengan simbol ellipsis (…). Perhatikan contoh kode berikut.
package main
import "fmt"
func sumNumbers(numbers ...int) int {
result := 0
for _, number := range numbers {
result += number
}
return result
}
func main() {
result := sumNumbers(10, 10, 10)
fmt.Println("Hasil:", result)
}
output:
Hasil: 30
Pada contoh di atas kita membuat sebuah variadic function bernama sumNumbers
yang memiliki parameter numbers. Dapat kamu lihat kita menambahkan simbol ellipsis (…) diikuti tipe data integer.
Di dalamnya, variabel numbers kita iterasi untuk mengambil nilai yang dikirimkan kemudian kita jumlahkan dengan variabel result.
Kemudian dalam function main
kita paggil function sumNumbers
dengan menmberi 3 buah argument dipisahkan dengan koma. Argument inilah yang kemudian kita jumlahkan. Kamu bisa menambahkan argument sebanyak yang kamu inginkan.
Dalam variadic function, kamu hanya bisa membuat 1 buah varargs dan harus berada diposisi terakhir.
Error:
func sum(nums ...int, name string) {
//
}
Benar:
func sum(name string, nums ...int) {
//
}
Slice Sebagai Parameter
Varargs pada variadic function akan dirubah menjadi slice oleh karena itu kita bisa melakukan perulangan pada varargs untuk melakukan penjumlahan. Pada contoh sebelumnya kita menuliskan angka-angka langsung saat memanggil function.
Tapi sebenarnya kamu bisa juga memasukkan slice yang sudah dibuat sebelumnya sebagai argument pada variadic function. Caranya adalah kita tuliskan nama variabel slice kemudian diikuti dengan simbol ellipsis (…).
Perhatikan contoh berikut ini:
package main
import "fmt"
func sumNumbers(numbers ...int) int {
result := 0
for _, number := range numbers {
result += number
}
return result
}
func main() {
numbers := []int{10, 10, 10}
result := sumNumbers(numbers...)
fmt.Println("Hasil:", result)
}
output:
Hasil: 30
Berikutnya: #24: Function as Value