Menu
CoddyTech

Nilai Nol dan Nilai Bawaan

Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan GO di Coddy. Pelajaran 17 dari 107.

Di Go, setiap variabel memiliki nilai nol: nilai default yang diberikan saat kamu mendeklarasikan variabel tanpa inisialisasi eksplisit. Memahami nilai nol sangat penting saat menggunakan struct, karena field yang belum diinisialisasi otomatis menerima nilai default tersebut.

Setiap tipe memiliki nilai nolnya sendiri:

TipeNilai Nol
int, float640
string"" (string kosong)
boolfalse
pointer, slice, mapnil

Saat kamu membuat struct, setiap field yang tidak kamu tetapkan secara eksplisit akan mendapatkan nilai nolnya.

type User struct {
    Name   string
    Age    int
    Active bool
}

func main() {
    var u User
    fmt.Println(u.Name)   // "" (string kosong)
    fmt.Println(u.Age)    // 0
    fmt.Println(u.Active) // false
}

Ini juga berlaku untuk inisialisasi parsial. Hanya field yang kamu tentukan yang mendapatkan nilai khusus.

u := User{Name: "Alice"}
fmt.Println(u.Age)    // 0
fmt.Println(u.Active) // false

Nilai nol membuat struct langsung dapat digunakan tanpa inisialisasi eksplisit. Namun, berhati-hatilah dengan tipe referensi seperti slice dan map. Nilai nolnya adalah nil, yang dapat menyebabkan panic saat runtime jika kamu mencoba menggunakannya tanpa inisialisasi.

challenge icon

Tantangan

Mudah

Mari buat sistem profil pemain yang menunjukkan cara kerja nilai zero di Go. Kamu akan membuat profil game dengan beberapa field yang diatur secara eksplisit, sementara field lainnya menggunakan nilai zero default.

Kamu akan menyusun kodemu dalam dua file:

  • player.go: Definisikan struct Player dengan field berikut: Username (string), Level (int), Score (int), IsPremium (bool), dan GuildName (string). Buat juga method DisplayProfile yang mengembalikan string berformat dan menampilkan semua informasi pemain.
  • main.go: Baca username dari input dan buat Player dengan inisialisasi parsial saja, cukup atur field Username. Lalu tampilkan profil lengkap untuk melihat cara Go mengisi field yang tidak diatur dengan nilai zero.

Input berikut akan diberikan:

  • Baris 1: Username pemain

Method DisplayProfile milikmu harus mengembalikan string dengan format persis seperti ini:

Username: [Username]
Level: [Level]
Score: [Score]
Premium: [IsPremium]
Guild: [GuildName]

Misalnya, jika username-nya ShadowKnight, output-mu harus menampilkan username tersebut beserta semua nilai zero untuk field yang belum diinisialisasi:

Username: ShadowKnight
Level: 0
Score: 0
Premium: false
Guild: 

Perhatikan bahwa field Guild tidak menampilkan apa pun setelah titik dua: itulah nilai zero berupa string kosong. Tantangan ini membantumu melihat dengan tepat nilai yang Go tetapkan untuk setiap tipe saat kamu tidak memberikan nilai secara eksplisit.

Coba sendiri

package main

import (
	"fmt"
)

func main() {
	// Baca username dari input
	var username string
	fmt.Scanln(&username)

	// TODO: Buat Player dengan inisialisasi parsial
	// Isi hanya field Username, biarkan field lain menggunakan nilai nol

	// TODO: Tampilkan profil pemain menggunakan method DisplayProfile
}
quiz iconUji dirimu

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

Semua pelajaran di Pemrograman Berorientasi Objek

Latihan sendiri: Compiler Go online