Özet - Struct Davranışı
Coddy'nin GO Journey'sinin Mantık ve Akış bölümünün bir parçası — ders 11 / 68.
Görev
KolayBu 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:
- İki alana sahip bir
Rectangleyapısı tanımlayın:Width(float64) veHeight(float64) - Dikdörtgenin alanını (genişlik × yükseklik) hesaplayan ve döndüren, değer alıcılı
areaadında bir yöntem oluşturun - Hem genişliği hem de yüksekliği verilen ölçeklendirme faktörüyle çarpan, işaretçi alıcılı
scaleadında bir yöntem oluşturun - Bir
Rectangleörneği oluşturmak için girdileri ayrıştırın - Başlangıç alanını şu formatı kullanarak yazdırın:
"Initial area: [area]" - Ölçeklendirme faktörü ile
scaleyöntemini çağırın - Ö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
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ışlar