Fungsi: Apa dan Kenapa?
Fungsi (function) adalah blok kode yang bisa kita jalankan berkali-kali. Bayangkan kayak resep masakan — bisa dipakai berulang dan bisa dikasih bahan berbeda (parameter).
Cara Bikin Fungsi
Di Go, fungsi dibuat dengan kata kunci func.
func halo() {
fmt.Println("Halo dunia!")
}
Lalu untuk manggil fungsi ini:
halo()
Parameter Fungsi
Kadang kita butuh ngasih input ke fungsi. Nah, ini bisa lewat parameter.
func sapa(nama string) {
fmt.Println("Halo", nama)
}
Untuk memanggilnya:
sapa("Syahrul")
Return Value
Fungsi bisa juga ngembaliin nilai. Kita pakai return untuk itu.
func tambah(a int, b int) int {
return a + b
}
Cara panggilnya:
hasil := tambah(3, 4)
fmt.Println(hasil) // Output: 7
Multiple Return
Go keren banget — satu fungsi bisa balikin lebih dari satu nilai.
func bagiDanSisa(a, b int) (int, int) {
return a / b, a % b
}
hasil, sisa := bagiDanSisa(10, 3)
fmt.Println(hasil, sisa) // Output: 3 1
Kalau salah satunya nggak dipakai:
_, sisa := bagiDanSisa(10, 3)
Named Return
Mau return value-nya dikasih nama? Bisa juga!
func kelipatanDua(n int) (hasil int) {
hasil = n * 2
return
}
Fungsi Variadic
Pengen ngasih banyak argumen kayak array tapi lebih fleksibel? Pakai variadic!
func total(nilai ...int) int {
jumlah := 0
for _, v := range nilai {
jumlah += v
}
return jumlah
}
fmt.Println(total(1, 2, 3, 4)) // Output: 10
Fungsi sebagai Nilai
Di Go, fungsi bisa disimpan sebagai nilai — keren, kan?
var cetak = func(pesan string) {
fmt.Println(pesan)
}
cetak("Fungsi itu fleksibel!")
Fungsi sebagai Parameter
Kita bisa kirim fungsi ke fungsi lain. Contohnya:
func sapaDenganFormat(format func(string) string, nama string) {
fmt.Println(format(nama))
}
func ucapanFormal(nama string) string {
return "Selamat datang, " + nama
}
sapaDenganFormat(ucapanFormal, "Syahrul")
Fungsi Tanpa Nama (Anonymous Function)
Kadang kita butuh fungsi cepat tanpa nama, misalnya:
func() {
fmt.Println("Langsung jalan!")
}()
Atau simpan ke variabel:
halo := func(nama string) {
fmt.Println("Hai,", nama)
}
halo("RuangCodes")
Penutup
Fungsi di Go sangat fleksibel dan powerful. Di part berikutnya, kita akan bahas error handling — gimana cara menangani kesalahan dengan elegan!

