Menu
CoddyTech

Mendefinisikan Interface

Termasuk bagian Logika & Alur dalam perjalanan GO di Coddy. Pelajaran 13 dari 68.

Sekarang setelah kamu memahami konsep interface, mari pelajari cara mendefinisikannya di Go. Interface didefinisikan menggunakan kata kunci interface, diikuti oleh sekumpulan tanda tangan method yang diapit kurung kurawal.

Berikut sintaks dasar untuk mendefinisikan interface:

type InterfaceName interface {
    MethodName() ReturnType
    AnotherMethod(parameter Type) ReturnType
}

Perhatikan bahwa interface hanya berisi signature method, yaitu nama method, parameter, dan tipe nilai kembalian, tanpa implementasi. Interface tidak menentukan cara kerja method tersebut, hanya method apa yang harus ada.

Contohnya, berikut cara mendefinisikan interface Shaper sederhana yang mengharuskan setiap tipe yang mengimplementasikannya memiliki method Area:

type Shaper interface {
    Area() float64
}

Interface ini menetapkan kontrak: tipe apa pun yang ingin dianggap sebagai Shaper harus memiliki method Area yang tidak menerima parameter dan mengembalikan float64. Interface ini tidak peduli apa tipe tersebut atau bagaimana tipe itu menghitung luas, yang penting method tersebut ada dengan signature yang benar.

challenge icon

Tantangan

Mudah

Dalam tantangan ini, kamu akan berlatih mendefinisikan interface di Go dengan membuat sistem pemutar media sederhana. Kamu akan mendefinisikan interface yang menetapkan kontrak untuk berbagai tipe perangkat media.

Kamu akan menerima satu input:

  • Sebuah string yang mewakili tindakan media (misalnya, "play", "pause", atau "stop")

Tugasmu adalah:

  1. Mendefinisikan interface bernama MediaPlayer dengan tiga signature method:
    • Play() yang mengembalikan string
    • Pause() yang mengembalikan string
    • Stop() yang mengembalikan string
  2. Berdasarkan tindakan input, cetak signature method yang sesuai dari interface MediaPlayer dalam format: "MediaPlayer interface requires: [MethodName]() string"

Program ini belum menggunakan MediaPlayer, dan itu tidak masalah: Go mengompilasi interface meskipun tidak ada tipe yang mengimplementasikannya. Pernyataan cetak hanya melaporkan signature method yang diwajibkan interface-mu untuk tindakan yang diberikan. Pada pelajaran berikutnya, kamu akan membuat tipe yang mengimplementasikan MediaPlayer dan memanggil method-nya.

Nama method harus diawali huruf kapital (diekspor) karena merupakan bagian dari definisi interface. Untuk input "play", cetak "MediaPlayer interface requires: Play() string", untuk "pause" cetak "MediaPlayer interface requires: Pause() string", dan untuk "stop" cetak "MediaPlayer interface requires: Stop() string".

Tantangan ini berfokus pada konsep dasar mendefinisikan interface dengan signature method, yang menetapkan kontrak yang harus dipenuhi oleh setiap tipe yang mengimplementasikannya.

Coba sendiri

package main

import "fmt"

func main() {
    // Baca input
    var action string
    fmt.Scanln(&action)
    
    // TODO: Definisikan interface MediaPlayer-mu di sini
    
    // TODO: Tulis kodemu di bawah untuk menangani action dan mencetak output yang diminta
    
    // Cetak hasilnya
    // Ingat untuk mencetak dengan format: "MediaPlayer interface requires: [MethodName]() string"
}
quiz iconUji dirimu

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

Semua pelajaran di Logika & Alur

Latihan sendiri: Compiler Go online