Rekap: Perilaku Struct
Termasuk bagian Logika & Alur dalam perjalanan GO di Coddy. Pelajaran 11 dari 68.
Tantangan
MudahDalam tantangan ini, kamu akan berlatih menerapkan value receiver dan pointer receiver dengan membuat sistem sederhana untuk mengelola persegi panjang. Kamu akan membuat struct Rectangle dan mendefinisikan dua jenis method yang berbeda untuk menunjukkan kapan masing-masing jenis receiver digunakan.
Kamu akan menerima tiga input:
- String yang mewakili lebar persegi panjang (misalnya,
"5.0") - String yang mewakili tinggi persegi panjang (misalnya,
"3.0") - String yang mewakili faktor skala (misalnya,
"2.0")
Tugasmu adalah:
- Definisikan struct
Rectangledengan dua field:Width(float64) danHeight(float64) - Buat method bernama
areadengan value receiver yang menghitung dan mengembalikan luas persegi panjang (lebar × tinggi) - Buat method bernama
scaledengan pointer receiver yang mengalikan lebar dan tinggi dengan faktor skala yang diberikan - Uraikan input untuk membuat instance
Rectangle - Cetak luas awal dengan format:
"Initial area: [area]" - Panggil method
scaledengan faktor skala - Cetak luas setelah diskalakan dengan format:
"Scaled area: [area]"
Nilai luas harus ditampilkan sebagai bilangan bulat jika nilainya bilangan bulat (misalnya, 15, bukan 15.0), tetapi tampilkan angka desimal jika diperlukan (misalnya, 15.5). Tantangan ini menunjukkan prinsip utama: gunakan value receiver untuk method yang hanya membaca data (seperti menghitung luas) dan pointer receiver untuk method yang mengubah struct asli (seperti mengubah skala dimensi).
Coba sendiri
package main
import (
"fmt"
"strconv"
)
// TODO: Definisikan struct Rectangle milikmu di sini
// TODO: Implementasikan method area dengan value receiver di sini
// TODO: Implementasikan method scale dengan pointer receiver di sini
func main() {
// Baca input
var widthStr string
var heightStr string
var scaleStr string
fmt.Scanln(&widthStr)
fmt.Scanln(&heightStr)
fmt.Scanln(&scaleStr)
// Ubah input menjadi float64
width, _ := strconv.ParseFloat(widthStr, 64)
height, _ := strconv.ParseFloat(heightStr, 64)
scaleFactor, _ := strconv.ParseFloat(scaleStr, 64)
// TODO: Buat instance Rectangle dan implementasikan solusi di bawah ini
// Cetak luas awal
// fmt.Printf("Initial area: %.0f\n", initialArea) // Gunakan format ini untuk output
// Ubah ukuran persegi panjang
// Cetak luas setelah diubah ukurannya
// fmt.Printf("Scaled area: %.0f\n", scaledArea) // Gunakan format ini untuk output
}Semua pelajaran di Logika & Alur
1Alur Kontrol Lanjutan
switch dengan `fallthrough`Keluar dari Perulangan BersarangMelanjutkan Perulangan TertentuPernyataan `goto`Rangkuman, Kontrol Perulangan Lanjutan4Proyek: Daftar Tugas Sederhana
Menyiapkan ProyekMenambahkan Tugas2Struct dan Method
Mendefinisikan Method pada StructPenerima NilaiPenerima PointerMemilih PenerimaMethod vs FungsiRekap: Perilaku Struct5Map secara Mendalam
Map Berisi StructPointer sebagai Nilai MapMenguji Map NilMembandingkan MapRingkasan: Penghitung Frekuensi Kata8Proyek: Inventaris Sederhana
Gambaran Umum ProyekMemeriksa Stok3Interface (Dasar)
Apa Itu Interface?Mendefinisikan InterfaceMengimplementasikan InterfaceMenggunakan Tipe InterfaceInterface KosongType AssertionType SwitchRingkasan: Bentuk dan PerilakuLatihan sendiri: Compiler Go online