Fungsi #
Fungsi dalam bahasa pemrograman Golang adalah blok kode yang dapat digunakan kembali dan dirancang untuk melakukan tugas tertentu. Fungsi membantu mengorganisasi kode, meningkatkan keterbacaan, dan memfasilitasi pemeliharaan. Berikut adalah penjelasan tentang berbagai aspek fungsi dalam Golang dan cara penggunaannya:
Definisi Fungsi #
Fungsi didefinisikan dengan menggunakan kata kunci func
diikuti dengan nama fungsi, parameter (jika ada), tipe pengembalian (jika ada), dan badan fungsi.
package main
import "fmt"
// Fungsi sederhana tanpa parameter dan tanpa nilai kembali
func sayHello() {
fmt.Println("Hello, World!")
}
func main() {
sayHello()
}
Fungsi dengan Parameter #
Fungsi dapat menerima satu atau lebih parameter. Parameter didefinisikan di dalam tanda kurung setelah nama fungsi.
package main
import "fmt"
// Fungsi dengan satu parameter
func greet(name string) {
fmt.Printf("Hello, %s!\n", name)
}
func main() {
greet("Alice")
}
Fungsi dengan Banyak Parameter #
Fungsi dapat memiliki beberapa parameter yang dipisahkan dengan koma.
package main
import "fmt"
// Fungsi dengan dua parameter
func add(a int, b int) int {
return a + b
}
func main() {
result := add(3, 4)
fmt.Println(result) // Output: 7
}
Fungsi dengan Nilai Kembali #
Fungsi dapat mengembalikan nilai menggunakan kata kunci return
. Tipe nilai kembali ditentukan setelah daftar parameter.
package main
import "fmt"
// Fungsi dengan nilai kembali
func multiply(a int, b int) int {
return a * b
}
func main() {
result := multiply(3, 4)
fmt.Println(result) // Output: 12
}
Fungsi dengan Banyak Nilai Kembali #
Fungsi dapat mengembalikan lebih dari satu nilai.
package main
import "fmt"
// Fungsi dengan dua nilai kembali
func divide(a int, b int) (int, int) {
quotient := a / b
remainder := a % b
return quotient, remainder
}
func main() {
q, r := divide(10, 3)
fmt.Printf("Quotient: %d, Remainder: %d\n", q, r) // Output: Quotient: 3, Remainder: 1
}
Fungsi Variadik #
Fungsi variadik dapat menerima sejumlah argumen yang tidak ditentukan.
package main
import "fmt"
// Fungsi variadik
func sum(numbers ...int) int {
total := 0
for _, number := range numbers {
total += number
}
return total
}
func main() {
result := sum(1, 2, 3, 4, 5)
fmt.Println(result) // Output: 15
}
Penamaan Nilai Kembali #
Fungsi dapat memiliki nama untuk nilai kembali, yang membuat kode lebih mudah dibaca dan memungkinkan penggunaan kata kunci return
tanpa argumen untuk mengembalikan nilai.
package main
import "fmt"
// Fungsi dengan penamaan nilai kembali
func rectangleArea(length, width int) (area int) {
area = length * width
return
}
func main() {
result := rectangleArea(3, 4)
fmt.Println(result) // Output: 12
}
Fungsi Anonim #
Fungsi anonim adalah fungsi yang tidak memiliki nama. Fungsi anonim dapat digunakan langsung atau disimpan dalam variabel.
package main
import "fmt"
func main() {
// Fungsi anonim yang langsung dieksekusi
func() {
fmt.Println("Hello from anonymous function")
}()
// Fungsi anonim yang disimpan dalam variabel
add := func(a, b int) int {
return a + b
}
fmt.Println(add(3, 4)) // Output: 7
}
Fungsi sebagai Parameter #
Fungsi dapat diteruskan sebagai argumen ke fungsi lain.
package main
import "fmt"
// Fungsi yang menerima fungsi lain sebagai parameter
func applyOperation(a, b int, operation func(int, int) int) int {
return operation(a, b)
}
func main() {
add := func(a, b int) int {
return a + b
}
result := applyOperation(3, 4, add)
fmt.Println(result) // Output: 7
}
Fungsi sebagai Nilai Kembali #
Fungsi dapat mengembalikan fungsi lain.
package main
import "fmt"
// Fungsi yang mengembalikan fungsi lain
func makeMultiplier(x int) func(int) int {
return func(y int) int {
return x * y
}
}
func main() {
double := makeMultiplier(2)
fmt.Println(double(5)) // Output: 10
}
Contoh Lengkap #
package main
import "fmt"
// Fungsi sederhana tanpa parameter dan tanpa nilai kembali
func sayHello() {
fmt.Println("Hello, World!")
}
// Fungsi dengan satu parameter
func greet(name string) {
fmt.Printf("Hello, %s!\n", name)
}
// Fungsi dengan dua parameter dan nilai kembali
func add(a int, b int) int {
return a + b
}
// Fungsi dengan dua nilai kembali
func divide(a int, b int) (int, int) {
quotient := a / b
remainder := a % b
return quotient, remainder
}
// Fungsi variadik
func sum(numbers ...int) int {
total := 0
for _, number := range numbers {
total += number
}
return total
}
// Fungsi dengan penamaan nilai kembali
func rectangleArea(length, width int) (area int) {
area = length * width
return
}
// Fungsi yang menerima fungsi lain sebagai parameter
func applyOperation(a, b int, operation func(int, int) int) int {
return operation(a, b)
}
// Fungsi yang mengembalikan fungsi lain
func makeMultiplier(x int) func(int) int {
return func(y int) int {
return x * y
}
}
func main() {
// Memanggil fungsi sederhana
sayHello()
// Memanggil fungsi dengan parameter
greet("Alice")
// Memanggil fungsi dengan dua parameter dan nilai kembali
result := add(3, 4)
fmt.Println(result) // Output: 7
// Memanggil fungsi dengan dua nilai kembali
q, r := divide(10, 3)
fmt.Printf("Quotient: %d, Remainder: %d\n", q, r) // Output: Quotient: 3, Remainder: 1
// Memanggil fungsi variadik
fmt.Println(sum(1, 2, 3, 4, 5)) // Output: 15
// Memanggil fungsi dengan penamaan nilai kembali
fmt.Println(rectangleArea(3, 4)) // Output: 12
// Memanggil fungsi yang menerima fungsi lain sebagai parameter
multiply := func(a, b int) int {
return a * b
}
fmt.Println(applyOperation(3, 4, multiply)) // Output: 12
// Memanggil fungsi yang mengembalikan fungsi lain
double := makeMultiplier(2)
fmt.Println(double(5)) // Output: 10
}
Kesimpulan #
Dengan memahami berbagai aspek penggunaan fungsi dalam Golang, Anda dapat menulis kode yang lebih modular, terorganisir, dan mudah untuk dipelihara.