struct sebagai class
Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan GO di Coddy. Pelajaran 6 dari 107.
Struct di Go memiliki tujuan yang sama dengan class dalam bahasa lain. Struct mengelompokkan data yang saling terkait ke dalam satu tipe.
Definisikan struct dengan beberapa tipe field
type Car struct {
Brand string
Model string
Year int
Price float64
}Buat instance menggunakan nama field
car := Car{
Brand: "Toyota",
Model: "Camry",
Year: 2023,
Price: 28000.50,
}Akses dan ubah field
fmt.Println(car.Brand) // Toyota
fmt.Println(car.Year) // 2023
car.Price = 27000.00 // Ubah nilai field
fmt.Println(car.Price) // 27000Struct dapat berisi struct lain
type Engine struct {
Horsepower int
FuelType string
}
type Car struct {
Brand string
Model string
Engine Engine
}
car := Car{
Brand: "Ford",
Model: "Mustang",
Engine: Engine{Horsepower: 450, FuelType: "Gasoline"},
}
fmt.Println(car.Engine.Horsepower) // 450Struct mengelompokkan field terkait. Kamu mengakses field dengan operator titik, dan kamu bisa menyusun struct di dalam struct lain untuk membuat model data yang kompleks.
Tantangan
SedangDefinisikan struct Profile dengan field berikut:
Name: stringEmail: stringAge: intRole: string
Coba sendiri
package main
import "fmt"
func main() {
var name, email, role string
var age int
fmt.Scan(&name, &email, &age, &role)
p := Profile{
Name: name,
Email: email,
Age: age,
Role: role,
}
fmt.Printf("Name: %s\n", p.Name)
fmt.Printf("Email: %s\n", p.Email)
fmt.Printf("Age: %d\n", p.Age)
fmt.Printf("Role: %s\n", p.Role)
}Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Pemrograman Berorientasi Objek
1Dasar-Dasar OOP di Go
File EksternalWorkspace Go dan modulePaket dan ImporNama yang Diekspor dan Tidak DieksporPengantar OOP di Gostruct sebagai classMendefinisikan method pada structPointer receiver vs value receiverInisialisasi structFungsi KonstruktorUlasan: Kalkulator Sederhana4Interface
Pengenalan InterfaceImplementasi ImplisitInterface sebagai KontrakInterface Kosong (any)Type AssertionType SwitchKomposisi InterfaceInterface Stringer & ErrorUlasan: Kalkulator Bentuk7Enkapsulasi
Field yang Diekspor vs Tidak DieksporEnkapsulasi Tingkat PackageMethod Getter dan SetterPenyembunyian Informasi di GoRingkasan: Data Siswa10Generics (Go 1.18+)
Pengantar GenericsParameter TipeBatasan TipeStruct GenerikCara Alternatif untuk Method GenerikRingkasan Koleksi Generik2Mendalami Tipe dan Struct
Tipe Dasar dan KompositDefinisi Tipe KustomTag StructStruct AnonimStruct BersarangNilai Nol dan Nilai BawaanRangkuman: Buku Kontak5Komposisi daripada Pewarisan
Mengapa Go Tidak Memiliki PewarisanDasar Penyematan StructPromosi methodMenyematkan Beberapa StructPenyematan vs AgregasiMembayangi method yang DisematkanRangkuman: Hierarki Karyawan8Penanganan Error & OOP
Interface errorTipe Error KustomPembungkusan Error (fmt.Errorf)Error Sentinelerrors.Is() dan errors.As()Panic, Defer, dan RecoverRangkuman: Parser File3Pointer dan Memori
Dasar-Dasar Pointer di GoPointer ke StructPass by Value vs ReferenceFungsi new()Garbage Collection di GoRekap: Pembuat Linked List6Polimorfisme di Go
Polimorfisme melalui InterfaceDuck Typing di GoAturan Pemenuhan InterfaceKoleksi PolimorfikInjeksi DependensiRangkuman: Pemroses Pembayaran9Konkruensi & OOP
Dasar-dasar GoroutineChannel & KomunikasiChannel Ber-buffer vs Tanpa BufferPernyataan selectsync.Mutex & sync.RWMutexsync.WaitGroupDesain Struct yang Aman untuk ThreadRingkasan: Worker PoolLatihan sendiri: Compiler Go online