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.
Tantangan
MudahDalam 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:
- Mendefinisikan interface bernama
MediaPlayerdengan tiga signature method:Play()yang mengembalikan stringPause()yang mengembalikan stringStop()yang mengembalikan string
- Berdasarkan tindakan input, cetak signature method yang sesuai dari interface
MediaPlayerdalam 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"
}Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Logika & Alur
1Alur Kontrol Lanjutan
switch dengan `fallthrough`Keluar dari Perulangan BersarangMelanjutkan Perulangan TertentuPernyataan `goto`Rangkuman, Kontrol Perulangan Lanjutan4Proyek: Daftar Tugas Sederhana
Menyiapkan ProyekMenambahkan Tugas2Struct dan Method
Mendefinisikan Method pada StructPenerima NilaiPenerima PointerMemilih PenerimaMethod vs FungsiRekap: Perilaku Struct5Map secara Mendalam
Map Berisi StructPointer sebagai Nilai MapMenguji Map NilMembandingkan MapRingkasan: Penghitung Frekuensi Kata8Proyek: Inventaris Sederhana
Gambaran Umum ProyekMemeriksa Stok3Interface (Dasar)
Apa Itu Interface?Mendefinisikan InterfaceMengimplementasikan InterfaceMenggunakan Tipe InterfaceInterface KosongType AssertionType SwitchRingkasan: Bentuk dan PerilakuLatihan sendiri: Compiler Go online