Functions
Fungsi adalah blok kode yang bisa digunakan ulang untuk melakukan tugas tertentu.
Contoh Masalah
Bagaimana cara membuat kode yang bisa digunakan ulang? Misalnya:
- Menghitung luas dan keliling bangun datar
- Mengubah format teks
- Melakukan validasi data
Penyelesaian
package main
import (
"fmt"
"strings"
)
// 1. Fungsi sederhana tanpa parameter dan return
func sayHello() {
fmt.Println("Hello, Gopher!")
}
// 2. Fungsi dengan parameter
func hitungLuas(panjang, lebar float64) float64 {
return panjang * lebar
}
// 3. Fungsi dengan multiple return
func hitungLuasKeliling(panjang, lebar float64) (float64, float64) {
luas := panjang * lebar
keliling := 2 * (panjang + lebar)
return luas, keliling
}
// 4. Fungsi dengan named return values
func hitungPersegi(sisi float64) (luas float64, keliling float64) {
luas = sisi * sisi
keliling = 4 * sisi
return // naked return
}
// 5. Fungsi sebagai parameter
func prosesAngka(angka int, fn func(int) int) int {
return fn(angka)
}
func kuadrat(n int) int {
return n * n
}
func main() {
// Memanggil fungsi sederhana
sayHello()
// Memanggil fungsi dengan parameter
fmt.Printf("\nLuas persegi panjang: %.2f\n",
hitungLuas(5.0, 3.0))
// Memanggil fungsi dengan multiple return
luas, keliling := hitungLuasKeliling(6.0, 4.0)
fmt.Printf("\nPersegi Panjang 6x4:\n")
fmt.Printf("Luas: %.2f\n", luas)
fmt.Printf("Keliling: %.2f\n", keliling)
// Memanggil fungsi dengan named return
l, k := hitungPersegi(5.0)
fmt.Printf("\nPersegi 5x5:\n")
fmt.Printf("Luas: %.2f\n", l)
fmt.Printf("Keliling: %.2f\n", k)
// Menggunakan fungsi sebagai parameter
hasil := prosesAngka(5, kuadrat)
fmt.Printf("\nKuadrat dari 5: %d\n", hasil)
}
Penjelasan Kode
Deklarasi Fungsi
- Format:
func nama(parameter) return_type - Parameter opsional
- Return type opsional
- Format:
Jenis Return
- Single return: satu nilai
- Multiple return: beberapa nilai
- Named return: variabel return dideklarasikan
Parameter Fungsi
- Bisa kosong
- Bisa satu atau lebih
- Tipe sama bisa digabung
Output
Hello, Gopher!
Luas persegi panjang: 15.00
Persegi Panjang 6x4:
Luas: 24.00
Keliling: 20.00
Persegi 5x5:
Luas: 25.00
Keliling: 20.00
Kuadrat dari 5: 25
Tips
- Buat fungsi yang fokus pada satu tugas
- Gunakan nama yang jelas dan deskriptif
- Perhatikan tipe data parameter dan return
- Dokumentasikan fungsi yang kompleks
- Fungsi adalah first-class citizen di Go