Menu
CoddyTech

Ringkasan: Bentuk dan Perilaku

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

challenge icon

Tantangan

Mudah

Dalam tantangan ini, kamu akan membuat sistem komunikasi yang menunjukkan polimorfisme melalui interface. Kamu akan membuat interface Speaker dan mengimplementasikannya dengan berbagai tipe yang dapat berbicara dengan cara unik masing-masing.

Kamu akan menerima tiga input:

  • String yang menunjukkan jumlah speaker yang akan dibuat (misalnya, "3")
  • String yang berisi tipe speaker yang dipisahkan koma (misalnya, "person,parrot,person")
  • String yang berisi nama speaker yang dipisahkan koma (misalnya, "Alice,Polly,Bob")

Tugasmu adalah:

  1. Definisikan interface Speaker dengan satu signature method: Speak() yang mengembalikan string
  2. Definisikan struct Person dengan field Name (string)
  3. Definisikan struct Parrot dengan field Name (string)
  4. Implementasikan method Speak() untuk kedua struct:
    • Person harus mengembalikan: "Hello, I'm [name]"
    • Parrot harus mengembalikan: "Squawk! [name] says hello!"
  5. Buat fungsi bernama makeAllSpeak yang menerima slice interface Speaker sebagai parameter
  6. Di dalam makeAllSpeak, lakukan perulangan melalui slice dan panggil method Speak() pada setiap speaker, lalu cetak hasilnya
  7. Uraikan input untuk membuat instance speaker yang sesuai berdasarkan tipe dan nama yang diberikan
  8. Simpan semua speaker dalam slice interface Speaker
  9. Panggil makeAllSpeak dengan slice speaker-mu

Speaker harus dibuat sesuai urutannya dalam input. Misalnya, jika tipenya adalah "person,parrot,person" dan namanya adalah "Alice,Polly,Bob", buat Person bernama Alice, lalu Parrot bernama Polly, kemudian Person bernama Bob. Tantangan ini menunjukkan bagaimana berbagai tipe dapat diperlakukan secara seragam melalui interface bersama, sehingga memperlihatkan kekuatan polimorfisme di Go.

Coba sendiri

package main

import (
	"fmt"
	"strconv"
	"strings"
)

func main() {
	// Baca input
	var numSpeakersStr string
	var speakerTypesStr string
	var speakerNamesStr string
	
	fmt.Scanln(&numSpeakersStr)
	fmt.Scanln(&speakerTypesStr)
	fmt.Scanln(&speakerNamesStr)
	
	// Uraikan input
	numSpeakers, _ := strconv.Atoi(numSpeakersStr)
	speakerTypes := strings.Split(speakerTypesStr, ",")
	speakerNames := strings.Split(speakerNamesStr, ",")
	
	// TODO: Tulis kodemu di bawah ini
	// 1. Definisikan interface Speaker
	// 2. Definisikan struct Person dan Parrot
	// 3. Implementasikan method Speak() untuk kedua struct
	// 4. Buat fungsi makeAllSpeak
	// 5. Buat speaker berdasarkan input dan simpan dalam slice
	// 6. Panggil makeAllSpeak dengan slice milikmu
	
}

Semua pelajaran di Logika & Alur

Latihan sendiri: Compiler Go online