用golang中的方法进行结构转换

用golang中的方法进行结构转换,go,methods,struct,type-conversion,Go,Methods,Struct,Type Conversion,为了简化项目的导入和依赖关系,我希望转换一个类型结构,并且仍然可以访问它附加到的所有方法 这就是我想要的: type foo struct { a int } func (f *foo) bar() { f.a = 42 } type foo2 foo func main() { f := foo{12} f.bar() f2 := foo2(f) f2.a = 0 f2.bar() fmt.Println(f) fmt.Pr

为了简化项目的导入和依赖关系,我希望转换一个类型结构,并且仍然可以访问它附加到的所有方法

这就是我想要的:

type foo struct {
a int
}

func (f *foo) bar() {
    f.a = 42
}

type foo2 foo

func main() {
    f := foo{12}
    f.bar()
    f2 := foo2(f)
    f2.a = 0
    f2.bar()
    fmt.Println(f)
    fmt.Println(f2)
}
在“f2.Bar()”行中,我得到一个错误:

“f2.Bar未定义(类型Foo2没有字段或方法栏)”

即使我进行了转换,如何才能访问方法栏。我希望我的输出是

{42}
{42}
你可以用

只需创建struct并使用foo作为其成员之一。不要给它明确的名字

type foo2 struct {
    foo
}
这样,foo的所有方法都将可用于foo2

请注意,该程序的输出将为:

{42}
{{42}}
新的Go 1.9将提供更有效的方法来实现我认为您想要做的事情:

{42}
{{42}}