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
- Mendefinisikan dan Menggunakan Struct
- Metode pada Struct
- Pola Konstruktor
- Struct Anonim dan Komposisi