Menu
CoddyTech

Penerima Nilai

Termasuk bagian Logika & Alur dalam perjalanan GO di Coddy. Pelajaran 7 dari 68.

Saat kamu mendefinisikan method dengan receiver nilai, method tersebut beroperasi pada salinan instance struct, bukan pada struct asli. Artinya, perubahan apa pun pada receiver di dalam method tidak akan memengaruhi variabel struct asli.

type Counter struct {
    Value int
}

func (c Counter) increment() {
    c.Value++  // Ini mengubah salinannya, bukan yang asli
}

Dalam contoh ini, method increment memiliki penerima nilai (c Counter). Saat kamu memanggil method ini pada instance Counter, Go membuat salinan struct dan meneruskannya ke method. Perubahan apa pun pada c.Value di dalam method hanya memengaruhi salinan ini.

Value receiver berguna saat method-mu hanya perlu membaca data dari struct tanpa mengubahnya. Value receiver aman digunakan karena menjamin data asli tetap tidak berubah, sehingga kodemu lebih mudah diprediksi dan efek samping yang tidak diinginkan dapat dicegah.

challenge icon

Tantangan

Mudah

Dalam tantangan ini, kamu akan berlatih menggunakan penerima nilai dengan membuat sistem pemantauan suhu sederhana. Kamu akan membuat struct Sensor dan mendefinisikan method yang menunjukkan cara kerja penerima nilai dengan salinan struct.

Kamu akan menerima tiga input:

  • String yang mewakili ID sensor (misalnya, "TEMP001")
  • String yang mewakili pembacaan suhu saat ini (misalnya, "23.5")
  • String yang mewakili nilai penyesuaian suhu (misalnya, "2.0")

Tugasmu adalah:

  1. Definisikan struct Sensor dengan dua field: ID (string) dan Temperature (float64)
  2. Buat method bernama displayReading dengan penerima nilai yang mencetak informasi sensor dalam format: "Sensor [ID]: [temperature]°C"
  3. Buat method bernama adjustTemperature dengan penerima nilai yang menambahkan nilai penyesuaian ke suhu dan mencetak: "Adjusted reading: [new_temperature]°C"
  4. Parse input untuk membuat instance Sensor
  5. Panggil method displayReading untuk menampilkan suhu awal
  6. Panggil method adjustTemperature dengan nilai penyesuaian
  7. Panggil method displayReading lagi untuk menunjukkan bahwa struct asli tetap tidak berubah

Tantangan ini akan menunjukkan bahwa method dengan penerima nilai bekerja pada salinan struct, sehingga nilai suhu pada struct asli tetap tidak berubah bahkan setelah method adjustTemperature dipanggil. Nilai suhu harus ditampilkan dengan presisi satu angka di belakang koma.

Coba sendiri

package main

import (
    "fmt"
    "strconv"
)

// TODO: Definisikan struct Sensor-mu di sini

// TODO: Definisikan method displayReading dengan penerima nilai di sini

// TODO: Definisikan method adjustTemperature dengan penerima nilai di sini

func main() {
    // Baca input
    var sensorID string
    var tempStr string
    var adjustStr string
    
    fmt.Scanln(&sensorID)
    fmt.Scanln(&tempStr)
    fmt.Scanln(&adjustStr)
    
    // Uraikan nilai suhu dan penyesuaian
    temperature, _ := strconv.ParseFloat(tempStr, 64)
    adjustment, _ := strconv.ParseFloat(adjustStr, 64)
    
    // TODO: Buat instance Sensor dan panggil method yang diperlukan
    
}
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Logika & Alur

Latihan sendiri: Compiler Go online