Menu
CoddyTech

Mendefinisikan method pada struct

Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan GO di Coddy. Pelajaran 7 dari 107.

Method di Go adalah fungsi dengan argumen receiver khusus yang mengaitkan fungsi tersebut dengan tipe struct.

Sintaks method

func (receiverName StructType) MethodName() ReturnType {
    // isi method
}

Definisikan struct dengan method

type Rectangle struct {
    Width  float64
    Height float64
}

func (r Rectangle) Area() float64 {
    return r.Width * r.Height
}

func (r Rectangle) Perimeter() float64 {
    return 2 * (r.Width + r.Height)
}

Method dengan parameter

func (r Rectangle) Scale(factor float64) float64 {
    return r.Area() * factor
}

Memanggil method

rect := Rectangle{Width: 5, Height: 3}
fmt.Println(rect.Area())      // output: 15
fmt.Println(rect.Perimeter()) // output: 16
fmt.Println(rect.Scale(2))    // output: 30

Receiver (r Rectangle) memungkinkan kamu mengakses field struct di dalam method menggunakan variabel receiver r. Method dapat memanggil method lain pada struct yang sama.

challenge icon

Tantangan

Sedang

Tambahkan tiga method ke struct Circle:

  • Area: mengembalikan math.Pi * radius * radius
  • Circumference: mengembalikan 2 * math.Pi * radius
  • Describe: mengembalikan string: "Circle with radius X.XX"

Coba sendiri

package main

import "fmt"

func main() {
    var radius float64
    fmt.Scan(&radius)

    c := Circle{Radius: radius}

    fmt.Printf("Area: %.2f\n", c.Area())
    fmt.Printf("Circumference: %.2f\n", c.Circumference())
    fmt.Printf("Description: %s\n", c.Describe())
}
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Pemrograman Berorientasi Objek

Latihan sendiri: Compiler Go online