Menu
CoddyTech

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, Go'da bir arayüzü nasıl tanımlayacağı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ımlamanın temel sözdizimi şöyledir:

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

Bir arayüzün yalnızca metot imzalarını —metot adını, parametreleri ve dönüş türlerini— içerdiğine, ancak uygulama içermediğine dikkat et. Arayüz, bu metotların nasıl çalışması gerektiğini değil, yalnızca hangi metotların bulunması gerektiğini belirtir.

Örneğin, Area yöntemine sahip olmasını gerektiren basit bir Shaper arayüzünü şöyle tanımlayabilirsiniz:

type Shaper interface {
    Area() float64
}

Bu arayüz bir sözleşme oluşturur: Shaper olarak kabul edilmek isteyen her türün, parametre almayan ve float64 döndüren bir Area yöntemi 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 var olmasını önemser.

challenge icon

Görev

Kolay

Bu görevde, basit bir medya oynatıcı sistemi oluşturarak Go'da arayüz tanımlama pratiği yapacaksın. Farklı medya aygıtı 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 bir string (ör. "play", "pause" veya "stop")

Görevin:

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

Bu programda henüz hiçbir şey MediaPlayer kullanmıyor ve bu sorun değil: Go, hiçbir tür onu uygulamasa bile bir arayüzü derler. Yazdırma ifadeleri yalnızca arayüzünün verilen eylem için gerektirdiği metot imzasını bildirir. Sonraki derste MediaPlayer arayüzünü uygulayan bir tür oluşturacak ve onun metotlarını çağıracaksın.

Metot adları büyük harfle başlamalıdır (dışa aktarılmalıdır); çünkü bunlar bir arayüz tanımının parçası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 görev, metot imzalarıyla arayüz tanımlama ve arayüzü uygulayan her 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: MediaPlayer arayüzünü burada tanımla
    
    // TODO: action değerini işleyip gerekli çıktıyı yazdırmak için kodunu aşağıya yaz
    
    // Sonucu yazdır
    // Şu biçimde yazdırmayı unutma: "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