Bagaimanakah Medan Tanpa Nama Berfungsi dalam Go Structs?

Linda Hamilton
Lepaskan: 2024-11-14 22:22:02
asal
630 orang telah melayarinya

How do Anonymous Fields Work in Go Structs?

Medan Tanpa Nama dalam Go Structs

Dalam Go, struktur boleh mengandungi medan tanpa nama, iaitu medan tanpa nama yang jelas. Medan ini membenarkan anda membenamkan struct atau taip lain ke dalam struct semasa anda, memberikan akses kepada medan jenis terbenam tanpa menyenaraikannya secara eksplisit.

Tujuan Medan Tanpa Nama

Medan tanpa nama mempunyai beberapa tujuan:

  • Jenis Pembenaman: Mereka membenarkan anda membenamkan medan satu jenis ke dalam yang lain, mengurangkan pertindihan kod dan memudahkan untuk bekerja dengan struktur data yang kompleks.
  • Promosi: Medan tanpa nama pertama dikenali sebagai "medan digalakkan." Medannya boleh diakses terus pada struct induk, kerana ia bertindak seolah-olah medan tersebut diisytiharkan dalam struct induk.

Mengakses Medan Tanpa Nama

Anda boleh mengakses medan tanpa nama dengan cara yang sama anda akan mengakses medan bernama. Medan yang dipromosikan boleh diakses terus menggunakan nama medan struct induk. Medan tanpa nama lain boleh diakses menggunakan nama medan jenis terbenam.

Contoh

Pertimbangkan kod berikut:

package main

import "fmt"

type Widget struct {
    name string
}

type WrappedWidget struct {
    Widget  // Promoted field
    Time time.Time
    Price int64
}

func main() {
    widget := Widget{"my widget"}
    wrappedWidget := WrappedWidget{widget, time.Now(), 1234}

    fmt.Printf("Widget named %s, created at %s, has price %d\n",
        wrappedWidget.name,  // Accessing the promoted field
        wrappedWidget.Time,  // Accessing an anonymous field
        wrappedWidget.Price) // Accessing a normal field
}
Salin selepas log masuk

Output:

Widget named my widget, created at 2009-11-10 23:00:00 +0000 UTC m=+0.000000001, has price 1234
Salin selepas log masuk

Dalam contoh ini, WrappedWidget membenamkan struct Widget dan mempromosikan medan namanya. Akibatnya, anda boleh mengakses medan nama terus pada contoh WrappedWidget.

Atas ialah kandungan terperinci Bagaimanakah Medan Tanpa Nama Berfungsi dalam Go Structs?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan