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.
Görev
KolayBu 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:
MediaPlayeradlı, üç 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()
- Bir dize döndüren
- Girdi eylemine göre,
MediaPlayerarayü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"
}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
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ışlarKendi başına pratik yap: Online Go derleyicisi