Menu
Coddy logo textTech

Ö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.

challenge icon

Görev

Kolay

Bu 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:

  1. Bir dize döndüren Speak() metod imzasına sahip bir Speaker arayüzü tanımlayın
  2. Name alanına (string) sahip bir Person struct'ı tanımlayın
  3. Name alanına (string) sahip bir Parrot struct'ı tanımlayın
  4. 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!"
  5. Parametre olarak bir Speaker arayüzü dilimi (slice) alan makeAllSpeak adında bir fonksiyon oluşturun
  6. makeAllSpeak içinde, dilim üzerinde döngü kurun ve her konuşmacı için Speak() metodunu çağırarak sonucu yazdırın
  7. Verilen türlere ve isimlere göre uygun konuşmacı örneklerini oluşturmak için girdileri ayrıştırın
  8. Tüm konuşmacıları bir Speaker arayüzü diliminde saklayın
  9. Konuşmacı diliminizle makeAllSpeak fonksiyonunu ç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