簡體   English   中英

使用Golang中的方法進行結構轉換

[英]Struct conversion with methods in golang

為了簡化項目的導入和依賴性,我想轉換類型struct並仍然可以訪問它所附加的所有方法。

這是我正在尋找的:

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沒有字段或方法Bar)”

即使進行了轉換,我該如何訪問方法Bar。 我希望我的輸出是

{42}
{42}

您可以使用結構嵌入

package main

import (
    "fmt"
)

type foo struct {
    a int
}

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

type foo2 struct {
    foo
}

func main() {
    f := foo{12}
    f.bar()
    f2 := foo2{}
    f2.a = 0
    f2.bar()
    fmt.Println(f)
    fmt.Println(f2)
}

只需創建struct並使用foo作為其成員之一即可。 不要給它明確的名字

type foo2 struct {
    foo
}

這樣,foo2的所有方法都將可用。

請注意,該程序的輸出為:

{42}
{{42}}

新的Go 1.9隨附了實現我想做的更有效的方法: https : //tip.golang.org/doc/go1.9#language

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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