Ö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 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:
- İki alana sahip bir
Rectanglestruct'ı tanımlamak:Width(float64) veHeight(float64) - Dikdörtgenin alanını (genişlik × yükseklik) hesaplayıp döndüren, değer alıcısına sahip
areaadlı bir yöntem oluşturmak - Verilen ölçeklendirme faktörüyle hem genişliği hem de yüksekliği çarpan, işaretçi alıcısına sahip
scaleadlı bir yöntem oluşturmak - Bir
Rectangleörneği oluşturmak için girdileri ayrıştırmak - Başlangıç alanını şu biçimi kullanarak yazdırmak:
"Initial area: [area]" scaleyöntemini ölçeklendirme faktörüyle çağırmak- Ö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
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ışlarKendi başına pratik yap: Online Go derleyicisi