2016-12-02 10 views
1

埋め込まれた構造体が機能するために行きますか?渡す私はこのような何かを持っている

func DoStuff(f *Foo) {} 

func main() { 
    bar := Bar{NewFoo()} 
    DoStuff(bar) // <- go doesn't like this, type mismatch 
} 

埋め込み構造を取得して関数に渡すことはできますか?

私はこれを動作させることができる唯一の方法は、* Fooを構造体のメンバとして扱い、bar.fooとして渡す場合です。しかし、これは一種の乱雑です、それは唯一の方法ですか?

答えて

2

匿名フィールドは、組み込み型の名前によって対処することができます。

type Foo struct{} 

type Bar struct { 
    *Foo 
} 

bar := Bar{&Foo{}} 

func(f *Foo) {}(bar.Foo) 

言語仕様でStruct Typesセクションを参照してください。

+0

すごい! 12分待たなければならないが、ありがとう! :-) – flooblebit

関連する問題