0Pricing
Go Academy · Pelajaran

Mendefinisikan dan Menggunakan Struct

Literal struct, akses field, dan embedding

Mendefinisikan dan Menggunakan Struct adalah pelajaran Go Academy gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Go Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Go Academy mencakup 4 pelajaran total.

Apa Itu Struktur

Struktur mengelompokkan anggota terkait dengan tipe berbeda di bawah satu tipe bernama. Struktur adalah mekanisme utama Go untuk mendefinisikan struktur data khusus—mirip dengan kelas, tetapi tanpa pewarisan.

Deklarasi Struktur

Tentukan tipe struktur dengan kata kunci type:

package main
import "fmt"

type Person struct {
    Name string
    Age  int
    City string
}

func main() {
    p := Person{Name: "Alice", Age: 30, City: "London"}
    fmt.Println(p)
}

Literal Struktur

Dua gaya: menggunakan nama anggota (disarankan) dan posisi (bergantung pada urutan serta rentan terhadap perubahan):

package main

type Point struct{ X, Y int }

func main() {
    p1 := Point{X: 1, Y: 2} // named — preferred
    p2 := Point{3, 4}        // positional — avoid in non-test code
    _ = p1; _ = p2
}

Mengakses Anggota

Gunakan notasi titik untuk membaca dan menulis anggota:

package main
import "fmt"

type Car struct{ Brand string; Speed int }

func main() {
    c := Car{Brand: "Tesla", Speed: 200}
    fmt.Println(c.Brand)  // Tesla
    c.Speed = 250
    fmt.Println(c.Speed)  // 250
}

Nilai Nol Struktur

Nilai nol struktur memiliki semua anggota yang diatur ke nilai nol masing-masing. Anda dapat menggunakannya dengan aman tanpa inisialisasi:

package main
import "fmt"

type Config struct{ Debug bool; Port int; Host string }

func main() {
    var cfg Config
    fmt.Println(cfg) // {false 0 }
    cfg.Port = 8080
    fmt.Println(cfg) // {false 8080 }
}

Perbandingan Struktur

Struktur dapat dibandingkan dengan == jika semua anggotanya dapat dibandingkan:

package main
import "fmt"

type Point struct{ X, Y int }

func main() {
    a := Point{1, 2}
    b := Point{1, 2}
    c := Point{3, 4}
    fmt.Println(a == b) // true
    fmt.Println(a == c) // false
}

Struktur Adalah Tipe Nilai

Menetapkan struktur akan menyalin semua anggotanya. Perubahan pada salinan tidak memengaruhi yang asli:

package main
import "fmt"

type Rect struct{ W, H int }

func main() {
    r1 := Rect{10, 20}
    r2 := r1
    r2.W = 99
    fmt.Println(r1) // {10 20}
    fmt.Println(r2) // {99 20}
}

Struktur Bersarang

Anggota struktur dapat berupa struktur itu sendiri:

package main
import "fmt"

type Address struct{ City, Country string }
type Employee struct {
    Name    string
    Age     int
    Address Address
}

func main() {
    e := Employee{Name: "Bob", Age: 28, Address: Address{"Berlin", "DE"}}
    fmt.Println(e.Address.City) // Berlin
}

Anggota yang Diekspor dan Tidak Diekspor

Anggota yang diawali huruf besar adalah diekspor (publik). Anggota yang diawali huruf kecil adalah tidak diekspor (khusus paket):

package main

type config struct {
    host string // unexported
    Port int    // exported
}

func main() {
    c := config{host: "localhost", Port: 8080}
    _ = c
}

Penanda Struktur

Penanda struktur menyediakan metadata, misalnya untuk pengodean JSON. Penanda tersebut berupa literal teks setelah tipe anggota:

package main

type User struct {
    ID    int    `json:"id"`
    Name  string `json:"name"`
    Email string `json:"email,omitempty"`
}

func main() { _ = User{} }

Pemeriksaan Singkat

Apa nilai nol dari anggota bool dalam struktur?

Ringkasan: Struktur

Hal-hal penting:

  • Struktur mengelompokkan anggota terkait ke dalam tipe bernama
  • Gunakan literal dengan nama anggota—hindari posisi
  • Struktur adalah tipe nilai—penetapan akan menyalin
  • Anggota yang diawali huruf besar akan diekspor
  • Penanda struktur menambahkan metadata untuk pustaka seperti encoding/json

Latihan

Tentukan struktur Product dengan anggota Name string, Price float64, dan InStock bool. Buat dua instans, bandingkan dengan ==, lalu cetak hasilnya.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Mendefinisikan dan Menggunakan Struct” gratis?

Ya — teks lengkap “Mendefinisikan dan Menggunakan Struct” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Go Academy, upgrade ke CoddyKit PRO. Kursus Go Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Mendefinisikan dan Menggunakan Struct”?

Literal struct, akses field, dan embedding Kamu berlatih Go Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Go Academy?

Tidak diperlukan pengalaman sebelumnya. Go Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.

Berapa lama pelajaran “Mendefinisikan dan Menggunakan Struct” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Go Academy ini?

Ya. Setiap pelajaran Go Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Mendefinisikan dan Menggunakan Struct
  2. Metode pada Struct
  3. Pola Konstruktor
  4. Struct Anonim dan Komposisi
← Kembali ke Go Academy