[英]Passing go embedded struct to function
我有這樣的事情:
type Foo struct{}
func NewFoo() *Foo { ... }
type Bar struct {
*Foo
}
如何將Bar的實例傳遞給帶有* Foo的函數?
func DoStuff(f *Foo) {}
func main() {
bar := Bar{NewFoo()}
DoStuff(bar) // <- go doesn't like this, type mismatch
}
是否有可能獲得嵌入式結構並將其傳遞給函數?
我可以使它bar.foo
的唯一方法是,如果我將* Foo視為結構的成員並將其作為bar.foo
傳遞。 但這有點混亂,這是唯一的方法嗎?
匿名字段可以通過嵌入類型的名稱來尋址:
type Foo struct{}
type Bar struct {
*Foo
}
bar := Bar{&Foo{}}
func(f *Foo) {}(bar.Foo)
請參閱語言規范中的“ 結構類型”部分。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.