Fungsi variadik dalam Go membolehkan anda menghantar nombor pemboleh ubah argumen kepada fungsi. Ciri ini berguna apabila anda tidak mengetahui terlebih dahulu jumlah hujah yang akan anda luluskan. Fungsi variadic Golang menerima berbilang argumen daripada jenis yang sama dan boleh dipanggil dengan sebarang bilangan argumen, termasuk tiada.

package main
import "fmt"
// Hàm Variadic tính tổng
func sum(nums ...int) int {
total := 0
for _, n := range nums {
total += n
}
return total
}
func main() {
fmt.Println("Sum of 1, 2, 3:", sum(1, 2, 3))
fmt.Println("Sum of 4, 5:", sum(4, 5))
fmt.Println("Sum of no numbers:", sum())
}
Keputusan:
Sum of 1, 2, 3: 6
Sum of 4, 5: 9
Sum of no numbers: 0
Sintaks:
func functionName(parameters ...Type) ReturnType {
// Code
}
Dalam sintaks di atas:
parameters ...Type
menunjukkan bahawa fungsi boleh menerima pembolehubah bilangan argumen jenis Jenis.
- Anda boleh mengakses argumen dalam fungsi sebagai kepingan.
Cara menggunakan fungsi yang tidak pasti dalam Golang
Menggunakan fungsi Variadic
Apabila mentakrifkan fungsi variadic, anda menentukan jenis hujah diikuti dengan elipsis (...) seperti dalam contoh di atas. Di dalam fungsi, hujah ini boleh dianggap sebagai kepingan.
Memanggil fungsi variadic
Anda boleh memanggil fungsi variadic dengan sebarang bilangan argumen, termasuk sifar. Fungsi ini menganggap hujah sebagai hirisan.
Contohnya:
package main
import "fmt"
func sum(nums ...int) int {
total := 0
for _, n := range nums {
total += n
}
return total
}
func main() {
fmt.Println("Sum of 1, 2, 3:", sum(1, 2, 3))
fmt.Println("Sum of 4, 5:", sum(4, 5))
fmt.Println("Sum of no numbers:", sum())
}
Keputusan:
Sum of 1, 2, 3: 6
Sum of 4, 5: 9
Sum of no numbers: 0
Fungsi variadik dengan parameter berbeza
Anda juga boleh menggabungkan parameter variadic dengan parameter biasa dalam fungsi. Parameter variadic mesti sentiasa menjadi parameter terakhir.
Contohnya:
package main
import "fmt"
// Hàm Variadic tính tổng
func sum(nums ...int) int {
total := 0
for _, n := range nums {
total += n
}
return total
}
// Hàm với tham số thông thường và variadic
func greet(prefix string, nums ...int) {
fmt.Println(prefix)
for _, n := range nums {
fmt.Println("Number:", n)
}
}
func main() {
greet("Sum of numbers:", 1, 2, 3)
greet("Another sum:", 4, 5)
greet("No numbers sum:")
}
Keputusan:
Sum of numbers:
Number: 1
Number: 2
Number: 3
Another sum:
Number: 4
Number: 5
No numbers sum:
Had fungsi Variadic
- Fungsi variadic hanya boleh mempunyai satu parameter variadic dan ia mestilah parameter terakhir.
- Anda tidak boleh mempunyai berbilang parameter variadic dalam satu definisi fungsi.