unisbadri.com » Python Java Golang Typescript Kotlin Ruby Rust Dart PHP
Fungsi

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.

« Perulangan
Struct »