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 meydan okumada, arayüzler aracılığıyla çok biçimliliği gösteren bir iletişim sistemi oluşturacaksın. Bir Speaker arayüzü oluşturacak ve bunu kendi benzersiz biçimlerinde "konuşabilen" farklı türlerle uygulayacaksın.

Üç girdi alacaksın:

  • Oluşturulacak konuşmacı sayısını temsil eden bir dize (ör. "3")
  • Virgüllerle ayrılmış konuşmacı türlerini içeren bir dize (ör. "person,parrot,person")
  • Virgüllerle ayrılmış konuşmacı adlarını içeren bir dize (ör. "Alice,Polly,Bob")

Görevin:

  1. Bir dize döndüren tek bir metot imzasına sahip Speaker arayüzünü tanımlamak: Speak()
  2. Name alanı (string) bulunan bir Person struct'ı tanımlamak
  3. Name alanı (string) bulunan bir Parrot struct'ı tanımlamak
  4. Her iki struct için Speak() metodunu uygulamak:
    • Person şunu döndürmeli: "Hello, I'm [name]"
    • Parrot şunu döndürmeli: "Squawk! [name] says hello!"
  5. Parametre olarak Speaker arayüzlerinden oluşan bir slice alan makeAllSpeak adlı bir fonksiyon oluşturmak
  6. makeAllSpeak içinde slice üzerinde yineleme yapmak ve her konuşmacı için Speak() metodunu çağırarak sonucu yazdırmak
  7. Sağlanan türlere ve adlara göre uygun konuşmacı örneklerini oluşturmak için girdileri ayrıştırmak
  8. Tüm konuşmacıları Speaker arayüzlerinden oluşan bir slice içinde saklamak
  9. Konuşmacı slice'ınla makeAllSpeak fonksiyonunu çağırmak

Konuşmacılar, girdide göründükleri sırayla oluşturulmalıdır. Örneğin türler "person,parrot,person" ve adlar "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ştur. Bu meydan okuma, farklı türlerin paylaşılan bir arayüz aracılığıyla nasıl tek biçimli şekilde ele alınabileceğini göstererek Go'da çok biçimliliğin gücünü ortaya koyar.

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

Kendi başına pratik yap: Online Go derleyicisi