Mengenal Berbagai Jenis Fungsi di Go dengan Contoh Praktis
Sebagai developer yang suka bereksperimen, saya selalu merasa Go itu menyenangkan karena fungsinya itu first-class citizen. Kadang saat debugging di Go, saya baru sadar betapa fleksibelnya fungsi di bahasa ini. Gini deh, mari kiata lihat jenis-jenis fungsi yang wajib kamu tahu, lengkap dengan contoh siap pakai.
1. Fungsi Dasar
Fungsi standar untuk tugas sederhana, bisa mengembalikan nilai atau void
.
func add(a, b int) int {
return a + b
}
result := add(3, 4)
fmt.Println(result) // 7
2. Fungsi dengan Nilai Kembalian Ganda
Cocok untuk mengembalikan data plus error handling.
func sqrt(x float64) (float64, error) {
if x < 0 {
return 0, fmt.Errorf("negative number")
}
return math.Sqrt(x), nil
}
res, err := sqrt(16)
if err != nil {
fmt.Println(err)
} else {
fmt.Println(res) // 4
}
3. Swap Function dengan Named Return Values
Membuat kode lebih jelas dan mengurangi redundansi.
func swap(x, y int) (a, b int) {
a = y
b = x
return
}
x, y := swap(1, 2)
fmt.Println(x, y) // 2 1
4. Fungsi Anonim
Pas buat tugas singkat atau callback.
result := func(a, b int) int {
return a * b
}(3, 4)
fmt.Println(result) // 12
5. Fungsi sebagai First-Class Citizen
Bisa ditaruh di variabel, dikirim sebagai argumen, atau dikembalikan.
func createMultiplier(factor int) func(int) int {
return func(x int) int { return x * factor }
}
double := createMultiplier(2)
fmt.Println(double(5)) // 10
6. Fungsi yang Ditunda (Deferred)
Bagus buat cleanup, dijalankan setelah fungsi selesai.
defer fmt.Println("This will be printed last")
fmt.Println("This will be printed first")
7. Fungsi Variadic
Menerima jumlah argumen fleksibel.
func sum(nums ...int) int {
total := 0
for _, n := range nums {
total += n
}
return total
}
fmt.Println(sum(1,2,3)) // 6
fmt.Println(sum(4,5,6,7,8)) // 30
Refleksi Singkat
Pada akhirnya, memahami semua tipe fungsi ini bikin kita lebih percaya diri menulis kode Go yang efisien dan idiomatik. Dari fungsi dasar sampai variadic atau anonim, setiap tools punya tempatnya.