Latihan 1: Interface & Polymorphism — Go

Latihan 1 dari materi Interface & Polymorphism di Go — praktek dengan editor kode interaktif, test case otomatis, dan hint terpandu. Langsung jalan di browser.

Kode awal sudah punya interface Shape dengan method Area() float64, struct Circle dengan field R dan Area = 3.14 * c.R * c.R, dan slice shapes berisi Circle{R: 5}. Biarkan semuanya.

  1. Buat struct Rectangle dengan field W dan H (keduanya float64), lalu method Area() float64 yang mengembalikan r.W * r.H. Gak perlu menulis implements: punya method Area, berarti Rectangle sudah sebuah Shape.
  2. Buat fungsi totalArea(shapes []Shape) float64 yang menjumlahkan s.Area() dari semua isi slice, tanpa peduli tipe aslinya.
  3. Di main, tambahkan Rectangle{W: 4, H: 6} ke slice shapes, lalu ganti baris cetaknya jadi fmt.Println("Total:", totalArea(shapes)).

Output-nya 78.5 + 24:

Total: 102.5

totalArea juga dicoba dengan bentuk lain: totalArea([]Shape{Circle{R: 1}, Rectangle{W: 2, H: 3}}) harus 9.14.

Hint