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 meydan okumada, basit bir dikdörtgen yönetim sistemi oluşturarak hem değer (value) hem de işaretçi (pointer) alıcılarını uygulama pratiği yapacaksınız. Bir Rectangle yapısı oluşturacak ve her bir alıcı türünün ne zaman kullanılacağını gösteren iki farklı yöntem türü tanımlayacaksınız.

Üç girdi alacaksınız:

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

Göreviniz şunları yapmaktır:

  1. İki alana sahip bir Rectangle yapısı tanımlayın: Width (float64) ve Height (float64)
  2. Dikdörtgenin alanını (genişlik × yükseklik) hesaplayan ve döndüren, değer alıcılı area adında bir yöntem oluşturun
  3. Hem genişliği hem de yüksekliği verilen ölçeklendirme faktörüyle çarpan, işaretçi alıcılı scale adında bir yöntem oluşturun
  4. Bir Rectangle örneği oluşturmak için girdileri ayrıştırın
  5. Başlangıç alanını şu formatı kullanarak yazdırın: "Initial area: [area]"
  6. Ölçeklendirme faktörü ile scale yöntemini çağırın
  7. Ölçeklendirilmiş alanı şu formatı kullanarak yazdırın: "Scaled area: [area]"

Alan değerleri, tam sayı olduklarında tam sayı olarak (örneğin, 15.0 yerine 15), ancak gerektiğinde ondalık basamaklarla (örneğin, 15.5) görüntülenmelidir. Bu meydan okuma temel prensibi göstermektedir: yalnızca verileri okuyan yöntemler için (alan hesaplamak gibi) değer alıcılarını ve orijinal yapıyı değiştiren yöntemler için (boyutları ölçeklendirmek gibi) işaretçi alıcılarını kullanın.

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