Ringkasan: Bentuk dan Perilaku
Termasuk bagian Logika & Alur dalam perjalanan GO di Coddy. Pelajaran 19 dari 68.
Tantangan
MudahDalam 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:
- Definisikan interface
Speakerdengan satu signature method:Speak()yang mengembalikan string - Definisikan struct
Persondengan fieldName(string) - Definisikan struct
Parrotdengan fieldName(string) - Implementasikan method
Speak()untuk kedua struct:- Person harus mengembalikan:
"Hello, I'm [name]" - Parrot harus mengembalikan:
"Squawk! [name] says hello!"
- Person harus mengembalikan:
- Buat fungsi bernama
makeAllSpeakyang menerima slice interfaceSpeakersebagai parameter - Di dalam
makeAllSpeak, lakukan perulangan melalui slice dan panggil methodSpeak()pada setiap speaker, lalu cetak hasilnya - Uraikan input untuk membuat instance speaker yang sesuai berdasarkan tipe dan nama yang diberikan
- Simpan semua speaker dalam slice interface
Speaker - Panggil
makeAllSpeakdengan 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
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