簡體   English   中英

將go嵌入式結構傳遞給函數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM