Menu
Coddy logo textTech

Özet - Struct Davranışı

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

challenge icon

Görev

Kolay

Bu görevde, basit bir dikdörtgen yönetim sistemi oluşturarak hem değer alıcılarının hem de işaretçi alıcılarının kullanımını uygulayacaksın. Bir Rectangle struct'ı oluşturacak ve her alıcı türünün ne zaman kullanılacağını gösteren iki farklı yöntem türü tanımlayacaksın.

Üç girdi alacaksın:

  • Dikdörtgenin genişliğini temsil eden bir dize (ör. "5.0")
  • Dikdörtgenin yüksekliğini temsil eden bir dize (ör. "3.0")
  • Bir ölçeklendirme faktörünü temsil eden bir dize (ör. "2.0")

Görevin:

  1. İki alana sahip bir Rectangle struct'ı tanımlamak: Width (float64) ve Height (float64)
  2. Dikdörtgenin alanını (genişlik × yükseklik) hesaplayıp döndüren, değer alıcısına sahip area adlı bir yöntem oluşturmak
  3. Verilen ölçeklendirme faktörüyle hem genişliği hem de yüksekliği çarpan, işaretçi alıcısına sahip scale adlı bir yöntem oluşturmak
  4. Bir Rectangle örneği oluşturmak için girdileri ayrıştırmak
  5. Başlangıç alanını şu biçimi kullanarak yazdırmak: "Initial area: [area]"
  6. scale yöntemini ölçeklendirme faktörüyle çağırmak
  7. Ölçeklendirilmiş alanı şu biçimi kullanarak yazdırmak: "Scaled area: [area]"

Alan değerleri, tam sayı olduklarında tam sayı olarak gösterilmelidir (ör. 15.0 yerine 15); ancak gerektiğinde ondalık basamaklarla gösterilmelidir (ör. 15.5). Bu görev, temel bir prensibi gösterir: yalnızca verileri okuyan yöntemler (alanı hesaplamak gibi) için değer alıcılarını, özgün struct'ı değiştiren yöntemler (boyutları ölçeklendirmek gibi) için ise işaretçi alıcılarını kullan.

Kendin dene

package main

import (
	"fmt"
	"strconv"
)

// TODO: Rectangle struct'ınızı burada tanımlayın

// TODO: Değer alıcılı (value receiver) area metodunu burada uygulayın

// TODO: İşaretçi alıcılı (pointer receiver) scale metodunu burada uygulayın

func main() {
	// Girdiyi oku
	var widthStr string
	var heightStr string
	var scaleStr string
	fmt.Scanln(&widthStr)
	fmt.Scanln(&heightStr)
	fmt.Scanln(&scaleStr)
	
	// Girdileri float64'e dönüştür
	width, _ := strconv.ParseFloat(widthStr, 64)
	height, _ := strconv.ParseFloat(heightStr, 64)
	scaleFactor, _ := strconv.ParseFloat(scaleStr, 64)
	
	// TODO: Rectangle örneği oluşturun ve çözümü aşağıda uygulayın
	
	// Başlangıç alanını yazdır
	// fmt.Printf("Initial area: %.0f\n", initialArea) // Çıktı için bu formatı kullanın
	
	// Dikdörtgeni ölçeklendir
	
	// Ölçeklendirilmiş alanı yazdır
	// fmt.Printf("Scaled area: %.0f\n", scaledArea) // Çıktı için bu formatı kullanın
}

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

Kendi başına pratik yap: Online Go derleyicisi