Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk Memulakan Struktur Terbenam dengan betul dalam Go?

Bagaimana untuk Memulakan Struktur Terbenam dengan betul dalam Go?

Patricia Arquette
Lepaskan: 2024-12-24 10:21:24
asal
616 orang telah melayarinya

How to Correctly Initialize Embedded Structs in Go?

Jenis Struktur Terbenam Golang: Memahami Sintaks dan Penggunaan

Apabila bekerja dengan jenis struct terbenam dalam Go, adalah penting untuk memahami sintaks dan penggunaan yang betul. Artikel ini menangani isu tidak dapat memulakan struct terbenam.

Masalah:

Pertimbangkan jenis berikut:

type Value interface{}

type NamedValue struct {
    Name  string
    Value Value
}

type ErrorValue struct {
    NamedValue
    Error error
}
Salin selepas log masuk

Percubaan untuk mulakan ErrorValue menggunakan sintaks:

e := ErrorValue{Name: "alpha", Value: 123, Error: err}
Salin selepas log masuk

hasil dalam ralat.

Penyelesaian:

Jenis terbenam, juga dikenali sebagai medan tidak dinamakan, dirujuk dengan nama jenis yang tidak layak. Dalam kod yang disediakan, sintaks untuk memulakan ErrorValue adalah tidak betul.

Mengikut spesifikasi bahasa Go, medan terbenam harus dimulakan menggunakan nama jenis tanpa nama medan. Berikut ialah sintaks yang betul:

e := ErrorValue{NamedValue: NamedValue{Name: "fine", Value: 33}, Error: err}
Salin selepas log masuk

Sebagai alternatif, anda boleh meninggalkan nama medan daripada literal komposit:

e := ErrorValue{NamedValue{"fine", 33}, err}
Salin selepas log masuk

Contoh:

package main

import "fmt"

type Value interface{}

type NamedValue struct {
    Name  string
    Value Value
}

type ErrorValue struct {
    NamedValue
    Error error
}

func main() {
    e := ErrorValue{NamedValue{Name: "alpha", Value: 123}, fmt.Errorf("some error")}
    fmt.Println(e)
}
Salin selepas log masuk

Output:

{NamedValue:{Name:alpha Value:123} Error:some error}
Salin selepas log masuk

Dengan memahami sintaks dan penggunaan jenis struct terbenam, anda boleh memanfaatkannya dengan berkesan dalam program Go anda.

Atas ialah kandungan terperinci Bagaimana untuk Memulakan Struktur Terbenam dengan betul dalam Go?. 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