Mengimplementasikan Interface
Termasuk bagian Logika & Alur dalam perjalanan GO di Coddy. Pelajaran 14 dari 68.
Sekarang setelah kamu tahu cara mendefinisikan interface, mari pelajari bagaimana tipe Go mengimplementasikannya. Hal terpenting yang perlu kamu pahami adalah Go menggunakan implementasi implisit, tidak diperlukan kata kunci atau deklarasi khusus.
Jika suatu tipe memiliki semua method yang diwajibkan oleh sebuah interface, tipe tersebut otomatis memenuhi interface itu. Kamu tidak perlu menyatakan secara eksplisit bahwa tipemu mengimplementasikan interface tersebut, Go akan mengetahuinya untukmu.
Begini cara kerjanya dengan interface Shaper dari pelajaran sebelumnya:
type Circle struct {
Radius float64
}
func (c Circle) Area() float64 {
return 3.14159 * c.Radius * c.Radius
}Karena tipe Circle memiliki method Area() yang mengembalikan float64, tipe tersebut secara otomatis mengimplementasikan interface Shaper. Kamu tidak perlu mendeklarasikan hubungan ini secara eksplisit, Go mengenalinya berdasarkan kecocokan tanda tangan method.
Pendekatan implisit ini membuat interface Go sangat fleksibel. Tipe apa pun yang sudah ada dapat memenuhi interface baru selama memiliki method yang diperlukan, meskipun interface tersebut dibuat setelah tipe itu ditulis.
Tantangan
MudahDalam tantangan ini, kamu akan berlatih mengimplementasikan interface dengan membuat sistem kendaraan sederhana. Kamu akan membuat struct Car yang otomatis mengimplementasikan interface Vehicle melalui implementasi implisit Go.
Kamu akan menerima dua input:
- String yang mewakili merek mobil (misalnya,
"Toyota") - String yang mewakili kecepatan mobil dalam km/h (misalnya,
"120")
Tugasmu:
- Definisikan interface
Vehicledengan satu tanda tangan method:GetInfo()yang mengembalikan string - Definisikan struct
Cardengan dua field:Brand(string) danSpeed(int) - Implementasikan method
GetInfo()untuk structCaryang mengembalikan string dengan format:"Brand: [brand], Speed: [speed] km/h" - Parse input untuk membuat instance
Car - Panggil method
GetInfo()dan cetak hasilnya
Ingat, di Go, struct Car akan otomatis mengimplementasikan interface Vehicle karena memiliki method GetInfo() yang diperlukan dengan tanda tangan yang benar. Kamu tidak perlu menyatakan secara eksplisit bahwa Car mengimplementasikan Vehicle, Go mengenali hubungan ini secara implisit.
Coba sendiri
package main
import (
"fmt"
"strconv"
)
// TODO: 1. Definisikan interface Vehicle dengan method GetInfo() yang mengembalikan string
// TODO: 2. Definisikan struct Car dengan field Brand (string) dan Speed (int)
// TODO: 3. Implementasikan method GetInfo() untuk Car
func main() {
// Baca input
var brand string
var speedStr string
fmt.Scanln(&brand)
fmt.Scanln(&speedStr)
// Ubah string speed menjadi bilangan bulat
speed, _ := strconv.Atoi(speedStr)
// TODO: 4. Buat instance Car menggunakan brand dan speed, lalu panggil GetInfo()
result := "" // ganti baris ini dengan implementasimu
_ = brand
_ = speed
// Tampilkan hasilnya sebagai output
fmt.Println(result)
}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