Menu
Coddy logo textTech

Özet - Rehber

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

challenge icon

Görev

Kolay

Özel türleri, iç içe yapıları, yapı etiketlerini ve sıfır değerleri bir araya getiren bir kişi rehberi sistemi oluşturalım: bu bölümde öğrendiğin tüm kavramlar.

Kodunu iki dosyaya ayıracaksın:

  • contact.go: Anlamlı özel türler ve uygun JSON biçimlendirmesiyle kişi rehberinin veri modelini tanımla:
    • Kodunu kendi kendini açıklayan hâle getirmek için Phone temel alınarak Email ve string özel türlerini oluştur
    • Address, Street ve City alanlarına sahip bir Country yapısı tanımla; her alana uygun JSON etiketleri ekle
    • Contact (string), Name (kendi Phone türün), Phone (kendi Email türün) ve Email (iç içe yapı) alanlarını içeren bir Address yapısı tanımla. phone ve email boş olduğunda yok sayılmaları için JSON etiketlerini kullan
  • main.go: Kişi bilgilerini girdiden oku, bir Contact örneği oluştur ve bunu biçimlendirilmiş JSON olarak çıktıla. Bazı kişilerin bilgileri eksik olabilir: sıfır değerlerin ve omitempty etiketinin bu durumları düzgün şekilde yönetmesine izin ver.

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

  • 1. satır: Kişi adı
  • 2. satır: Telefon numarası (boş olabilir)
  • 3. satır: E-posta adresi (boş olabilir)
  • 4. satır: Sokak adresi
  • 5. satır: Şehir
  • 6. satır: Ülke

Girinti için iki boşluk kullanarak json.MarshalIndent işlevini kullan. Ortaya çıkan JSON dizesini yazdır.

Örneğin; adı Alice Smith, telefonu olmayan, e-postası alice@example.com, sokağı 123 Main St, şehri Boston ve ülkesi USA olan bir kişi verildiğinde çıktın şöyle görünmelidir:

{
  "name": "Alice Smith",
  "email": "alice@example.com",
  "address": {
    "street": "123 Main St",
    "city": "Boston",
    "country": "USA"
  }
}

phone alanının, boş olduğu için hiç görünmediğine dikkat et: işte bu, omitempty etiketinin iş başındaki hâli!

Kendin dene

package main

import (
	"bufio"
	"encoding/json"
	"fmt"
	"os"
)

func main() {
	scanner := bufio.NewScanner(os.Stdin)

	// Adı oku
	scanner.Scan()
	name := scanner.Text()

	// Telefonu oku (boş olabilir)
	scanner.Scan()
	phone := scanner.Text()

	// E-postayı oku (boş olabilir)
	scanner.Scan()
	email := scanner.Text()

	// Sokağı oku
	scanner.Scan()
	street := scanner.Text()

	// Şehri oku
	scanner.Scan()
	city := scanner.Text()

	// Ülkeyi oku
	scanner.Scan()
	country := scanner.Text()

	// TODO: Giriş değerlerini kullanarak bir Contact örneği oluştur
	// İlgili alanlar için özel Phone ve Email tiplerinizi kullanın
	// street, city ve country ile iç içe Address struct'ını oluştur

	// TODO: contact'ı JSON'a dönüştürmek için json.MarshalIndent kullan
	// Önek olarak "" ve girinti olarak "  " (iki boşluk) kullan

	// TODO: JSON dizesini yazdır
	_ = name
	_ = phone
	_ = email
	_ = street
	_ = city
	_ = country
}

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

Kendi başına pratik yap: Online Go derleyicisi