Golang 嵌入式結構類型:了解語法和用法
在Go 中使用嵌入式結構類型時,理解它們的語法和用法至關重要正確使用。本文解決了無法初始化嵌入結構的問題。
問題:
考慮以下類型:
type Value interface{} type NamedValue struct { Name string Value Value } type ErrorValue struct { NamedValue Error error }
嘗試使用語法初始化ErrorValue:
e := ErrorValue{Name: "alpha", Value: 123, Error: err}
嘗試使用語法初始化ErrorValue:
結果錯誤。
解決方案:
嵌入類型,也稱為未命名字段,透過其非限定類型名稱來引用。在提供的程式碼中,初始化 ErrorValue 的語法不正確。e := ErrorValue{NamedValue: NamedValue{Name: "fine", Value: 33}, Error: err}
根據 Go 語言規範,應使用不含欄位名稱的型別名稱來初始化嵌入欄位。以下是正確的語法:
e := ErrorValue{NamedValue{"fine", 33}, err}
或者,您可以省略複合文字中的欄位名稱:
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) }範例:
{NamedValue:{Name:alpha Value:123} Error:some error}
輸出:
透過理解了解嵌入式結構類型的語法和用法,您可以在 Go 程式中有效地利用它們。以上是如何正確初始化Go中的嵌入式結構體?的詳細內容。更多資訊請關注PHP中文網其他相關文章!