Özet - Şekiller ve Davranışlar
Coddy'nin GO Journey'sinin Mantık ve Akış bölümünün bir parçası — ders 19 / 68.
Görev
KolayBu challenge'da, arayüzler (interfaces) aracılığıyla polimorfizmi (çok biçimlilik) gösteren bir iletişim sistemi oluşturacaksınız. Bir Speaker arayüzü inşa edecek ve bunu kendi benzersiz yollarıyla "konuşabilen" farklı türlerle uygulayacaksınız.
Üç girdi alacaksınız:
- Oluşturulacak konuşmacı sayısını temsil eden bir dize (örneğin,
"3") - Virgülle ayrılmış konuşmacı türlerini içeren bir dize (örneğin,
"person,parrot,person") - Virgülle ayrılmış konuşmacı isimlerini içeren bir dize (örneğin,
"Alice,Polly,Bob")
Göreviniz şunları yapmaktır:
- Bir dize döndüren
Speak()metod imzasına sahip birSpeakerarayüzü tanımlayın Namealanına (string) sahip birPersonstruct'ı tanımlayınNamealanına (string) sahip birParrotstruct'ı tanımlayın- Her iki struct için de
Speak()metodunu uygulayın:- Person şunu döndürmelidir:
"Hello, I'm [name]" - Parrot şunu döndürmelidir:
"Squawk! [name] says hello!"
- Person şunu döndürmelidir:
- Parametre olarak bir
Speakerarayüzü dilimi (slice) alanmakeAllSpeakadında bir fonksiyon oluşturun makeAllSpeakiçinde, dilim üzerinde döngü kurun ve her konuşmacı içinSpeak()metodunu çağırarak sonucu yazdırın- Verilen türlere ve isimlere göre uygun konuşmacı örneklerini oluşturmak için girdileri ayrıştırın
- Tüm konuşmacıları bir
Speakerarayüzü diliminde saklayın - Konuşmacı diliminizle
makeAllSpeakfonksiyonunu çağırın
Konuşmacılar, girdide göründükleri sırayla oluşturulmalıdır. Örneğin, türler "person,parrot,person" ve isimler "Alice,Polly,Bob" ise, önce Alice adında bir Person, ardından Polly adında bir Parrot ve sonra Bob adında bir Person oluşturun. Bu challenge, farklı türlerin ortak bir arayüz aracılığıyla nasıl tek tip olarak ele alınabileceğini göstererek Go'daki polimorfizmin gücünü sergiler.
Kendin dene
package main
import (
"fmt"
"strconv"
"strings"
)
func main() {
// Girdiyi oku
var numSpeakersStr string
var speakerTypesStr string
var speakerNamesStr string
fmt.Scanln(&numSpeakersStr)
fmt.Scanln(&speakerTypesStr)
fmt.Scanln(&speakerNamesStr)
// Girdiyi ayrıştır
numSpeakers, _ := strconv.Atoi(numSpeakersStr)
speakerTypes := strings.Split(speakerTypesStr, ",")
speakerNames := strings.Split(speakerNamesStr, ",")
// TODO: Kodunuzu aşağıya yazın
// 1. Speaker arayüzünü (interface) tanımlayın
// 2. Person ve Parrot yapılarını (struct) tanımlayın
// 3. Her iki yapı için Speak() metotlarını uygulayın
// 4. makeAllSpeak fonksiyonunu oluşturun
// 5. Girdiye göre konuşmacıları oluşturun ve bir dilimde (slice) saklayın
// 6. Diliminizle makeAllSpeak fonksiyonunu çağırın
}Mantık ve Akış bölümündeki tüm dersler
1İleri Seviye Kontrol Akışı
`fallthrough` ile Switchİç İçe Döngülerden ÇıkmaBelirli Bir Döngüye Devam Etme`goto` İfadesiÖzet - İleri Seviye Döngü Kontrolü4Proje: Basit Görev Listesi
Proje KurulumuGörev Ekleme2Structlar ve Metotlar
Structlarda Metot TanımlamaValue Receiver'larPointer Receiver'larReceiver SeçimiMetotlar ve FonksiyonlarÖzet - Struct Davranışı5Derinlemesine Map'ler
Struct Map'leriMap Değeri Olarak Pointer'larNil Map KontrolüMap'leri KarşılaştırmaÖzet - Kelime Frekansı Sayacı3Arayüzler (Temeller)
Arayüz Nedir?Bir Arayüz TanımlamaBir Arayüzü UygulamaArayüz Tiplerini KullanmaBoş ArayüzTip OnaylamalarıTip SeçimiÖzet - Şekiller ve Davranışlar