0Pricing
Go Academy · Pelajaran

Embedding Struct

Gabungkan struct

Embedding 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.

Menyusun Struct

Go tidak memiliki pewarisan kelas. Sebagai gantinya, Go menyediakan penyematan: tempatkan satu struct di dalam struct lain tanpa nama field untuk menggunakan kembali field dan metodenya.

Field Anonim

Field yang disematkan dideklarasikan hanya dengan tipe, tanpa nama. Anggotanya dipromosikan ke struct luar.

package main

import "fmt"

type Engine struct{ Power int }

type Car struct {
	Engine
	Brand string
}

func main() {
	c := Car{Engine: Engine{Power: 150}, Brand: "Coddy"}
	fmt.Println(c.Power, c.Brand)
}

Mengakses Field yang Dipromosikan

Anda dapat membaca c.Power secara langsung meskipun Power dimiliki oleh Engine yang disematkan. Itulah promosi field.

Jalur Lengkap Tetap Berfungsi

Anda selalu dapat mengakses struct yang disematkan secara eksplisit melalui nama tipenya.

package main

import "fmt"

type Engine struct{ Power int }
type Car struct{ Engine }

func main() {
	c := Car{Engine{200}}
	fmt.Println(c.Engine.Power)
	fmt.Println(c.Power)
}

Penyematan vs Field Bernama

Field bernama (engine Engine) memerlukan c.engine.Power. Penyematan (Engine) mempromosikan anggota sehingga Anda menulis c.Power. Penyematan menyatakan hubungan merupakan sejenis.

Menginisialisasi Struct yang Disematkan

Gunakan nama tipe sebagai kunci field dalam literal komposit.

package main

import "fmt"

type Address struct{ City string }
type User struct {
	Address
	Name string
}

func main() {
	u := User{Address: Address{City: "Istanbul"}, Name: "Mert"}
	fmt.Println(u.Name, "in", u.City)
}

Beberapa Penyematan

Sebuah struct dapat menyematkan beberapa tipe dan mencampurkan field-fieldnya.

package main

import "fmt"

type Timestamps struct{ Created string }
type Author struct{ Name string }
type Post struct {
	Timestamps
	Author
	Title string
}

func main() {
	p := Post{Timestamps{"today"}, Author{"Ada"}, "Hello"}
	fmt.Println(p.Title, p.Name, p.Created)
}

Benturan Nama

Jika dua tipe yang disematkan memiliki nama field yang sama, referensi yang ambigu menyebabkan galat kompilasi—Anda harus menyertakan nama tipe untuk membedakannya.

Pembayangan oleh Struct Luar

Field yang dideklarasikan pada struct luar membayangi field yang dipromosikan dengan nama sama. Field luar akan digunakan untuk akses tanpa kualifikasi.

package main

import "fmt"

type Base struct{ ID int }
type Item struct {
	Base
	ID int
}

func main() {
	i := Item{Base{1}, 99}
	fmt.Println(i.ID, i.Base.ID)
}

Penyematan Pointer

Anda dapat menyematkan tipe pointer. Anggotanya tetap dipromosikan, tetapi Anda harus menginisialisasi pointer tersebut agar tidak berisiko mengalami dereferensi nil.

package main

import "fmt"

type Logger struct{ Prefix string }
type Service struct{ *Logger }

func main() {
	s := Service{Logger: &Logger{Prefix: "[svc]"}}
	fmt.Println(s.Prefix)
}

Kapan Menggunakan Penyematan

  • Menggunakan kembali field umum (stempel waktu, ID)
  • Membangun tipe yang lebih kaya dari tipe yang lebih kecil
  • Menghindari penyarangan yang dalam dan jalur akses yang panjang

Pemeriksaan Singkat

Ujilah pengetahuan Anda tentang penyematan struct.

Ringkasan

Anda telah mempelajari penyematan struct.

  • Field anonim mempromosikan anggota ke struct luar
  • Akses melalui c.Power atau c.Engine.Power
  • Field luar membayangi field yang dipromosikan
  • Benturan memerlukan kualifikasi eksplisit
  • Penyematan pointer juga berfungsi

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Embedding Struct” gratis?

Ya — teks lengkap “Embedding 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 “Embedding Struct”?

Gabungkan struct 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 “Embedding 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. Embedding Struct
  2. Embedding Interface
  3. Promosi Method
  4. Komposisi, Bukan Pewarisan
← Kembali ke Go Academy