Menu
Coddy logo textTech

Anonim Struct'lar

Coddy'nin GO Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası. Ders 15 / 107.

Anonim struct, adlandırılmış bir türü olmayan bir struct'tır. Yapısını tanımlar ve type anahtar kelimesini kullanmadan tek adımda bir örneğini oluşturursun.

person := struct {
    Name string
    Age  int
}{
    Name: "Alice",
    Age:  30,
}

Bu, yeniden kullanılabilir bir tür tanımlamadan doğrudan bir struct değeri oluşturur. Anonim struct’lar, kodunuzun başka bir yerinde kullanılmayacak hızlı ve tek seferlik bir veri yapısına ihtiyaç duyduğunuzda kullanışlıdır.

Yaygın bir kullanım durumu, ilgili verileri tek bir işlev veya test için gruplandırmaktır.

config := struct {
    Host string
    Port int
}{
    Host: "localhost",
    Port: 8080,
}
fmt.Println(config.Host) // localhost

Anonim yapılar, her test durumunun benzersiz alanlara sahip olduğu tablo tabanlı testlerde de yaygın olarak kullanılır.

tests := []struct {
    input    int
    expected int
}{
    {1, 2},
    {5, 10},
}

Anonim yapıların tür adı olmadığından, üzerlerinde metot tanımlayamaz veya türü başka bir yerde yeniden kullanamazsınız. Bunları geçici, yerel veri gruplandırma işlemleri için kullanın. Birden fazla kez başvuracağınız herhangi bir şey için bunun yerine adlandırılmış bir yapı türü tanımlayın.

challenge icon

Görev

Kolay

Yeniden kullanılabilir bir türe ihtiyaç duymayan, tek seferlik veri gruplandırma işlemlerinde anonim yapıların ne zaman öne çıktığını gösteren hızlı bir yapılandırma sistemi oluşturalım.

Kodunuzu iki dosyaya ayıracaksınız:

  • config.go: Sunucu adını (string), bağlantı noktasını (int) ve hata ayıklama modunu (bool) parametre olarak alan GetServerConfig adlı bir işlev oluşturun. Bu işlev, bu üç değeri Name, Port ve Debug alanları olarak içeren anonim bir yapı döndürmelidir. Bu yapılandırma yalnızca tek bir yerde kullanıldığından, bunun için adlandırılmış bir tür tanımlamanıza gerek yoktur.
  • main.go: Sunucu yapılandırma değerlerini girdiden okuyun, GetServerConfig işlevinizi çağırın ve yapılandırma ayrıntılarını görüntüleyin.

Aşağıdaki girdiler sağlanacaktır:

  • 1. satır: Sunucu adı
  • 2. satır: Bağlantı noktası numarası
  • 3. satır: Hata ayıklama modu (true veya false)

Çıktı biçimi:

Server: [Name]
Port: [Port]
Debug: [Debug]

Örneğin, api-server, 8080 ve true verildiğinde çıktınız şu şekilde olmalıdır:

Server: api-server
Port: 8080
Debug: true

Anonim yapının, yalnızca bir kez kullanılan bir türle kod tabanınızı gereksiz yere karmaşıklaştırmadan gruplandırılmış verileri döndürmenize nasıl olanak tanıdığına dikkat edin.

Kendin dene

package main

import (
	"fmt"
)

func main() {
	// Girdi değerlerini oku
	var name string
	var port int
	var debug bool

	fmt.Scanln(&name)
	fmt.Scanln(&port)
	fmt.Scanln(&debug)

	// TODO: GetServerConfig'i girdi değerleriyle çağır
	// ve dönen anonim struct'ı sakla

	// TODO: Yapılandırmayı gerekli formatta yazdır:
	// Server: [Name]
	// Port: [Port]
	// Debug: [Debug]
}
quiz iconKendini test et

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

Nesne Yönelimli Programlama bölümündeki tüm dersler

Kendi başına pratik yap: Online Go derleyicisi