Menu
Coddy logo textTech

Bir Arayüz Tanımlama

Coddy'nin GO Journey'sinin Mantık ve Akış bölümünün bir parçası. Ders 13 / 68.

Artık arayüzlerin kavramsal olarak ne olduğunu anladığına göre, şimdi Go'da bir arayüzün nasıl tanımlanacağını öğrenelim. Bir arayüz, interface anahtar sözcüğü ve ardından süslü parantezler içinde yer alan bir dizi yöntem imzası kullanılarak tanımlanır.

Bir arayüz tanımlamak için temel söz dizimi şöyledir:

type InterfaceName interface {
    MethodName() ReturnType
    AnotherMethod(parameter Type) ReturnType
}

Bir arayüzün yalnızca yöntem imzalarını — yöntem adını, parametreleri ve dönüş türlerini — içerdiğine, ancak herhangi bir uygulama içermediğine dikkat edin. Arayüz, bu yöntemlerin nasıl çalışması gerektiğini belirtmez; yalnızca hangi yöntemlerin mevcut olması gerektiğini belirtir.

Örneğin, uygulayan herhangi bir türün bir Area yöntemine sahip olmasını gerektiren basit bir Shaper arayüzünü şu şekilde tanımlarsınız:

type Shaper interface {
    Area() float64
}

Bu arayüz bir sözleşme oluşturur: Shaper olarak kabul edilmek isteyen herhangi bir tür, parametre almayan ve bir float64 döndüren bir Area yöntemine sahip olmalıdır. Arayüz, türün ne olduğunu veya alanı nasıl hesapladığını önemsemez; yalnızca yöntemin doğru imzayla mevcut olmasını önemser.

challenge icon

Görev

Kolay

Bu meydan okumada, basit bir medya oynatıcı sistemi oluşturarak Go'da arayüz tanımlama pratiği yapacaksın. Farklı medya cihazı türleri için bir sözleşme oluşturan bir arayüz tanımlayacaksın.

Bir girdi alacaksın:

  • Bir medya eylemini temsil eden dize (ör. "play", "pause" veya "stop")

Görevin:

  1. MediaPlayer adlı, üç metot imzasına sahip bir arayüz tanımlamak:
    • Bir dize döndüren Play()
    • Bir dize döndüren Pause()
    • Bir dize döndüren Stop()
  2. Girdi eylemine göre, MediaPlayer arayüzündeki karşılık gelen metot imzasını şu biçimde yazdırmak: "MediaPlayer interface requires: [MethodName]() string"

Yazdırma ifadesi, yukarıda tanımladığın arayüzü yansıtmayı amaçlar. Verilen eylem için MediaPlayer arayüzünün hangi metot imzasını gerektirdiğini açıklıyorsun. Bunu, programının kendi arayüz sözleşmesini inceleyip raporlaması gibi düşünebilirsin.

Metot adları, bir arayüz tanımının parçası oldukları için büyük harfle başlamalıdır (dışa aktarılmalıdır). Girdi "play" için "MediaPlayer interface requires: Play() string", "pause" için "MediaPlayer interface requires: Pause() string" ve "stop" için "MediaPlayer interface requires: Stop() string" yazdır.

Bu meydan okuma, metot imzalarıyla arayüz tanımlama ve uygulayan herhangi bir türün yerine getirmesi gereken sözleşmeyi oluşturma temel kavramına odaklanır.

Kendin dene

package main

import "fmt"

func main() {
    // Girdiyi oku
    var action string
    fmt.Scanln(&action)
    
    // TODO: Define your MediaPlayer interface here
    
    // TODO: Eylemi işlemek ve gerekli çıktıyı yazdırmak için kodunuzu aşağıya yazın
    
    // Sonucu yazdır
    // Remember to print in format: "MediaPlayer interface requires: [MethodName]() string"
}
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Mantık ve Akış bölümündeki tüm dersler

Kendi başına pratik yap: Online Go derleyicisi