Die Go-way wäre, eine Schnittstelle zu verwenden. Auch wenn Sie das foobar-Paket nicht ändern können.
1) schaffen eine boomer Schnittstelle
type Boomer interface{
Boom(string)
}
2) Veränderung MOO(), dass sie die boomer
func moo(b Boomer) {
b.Boom("!")
}
3) fügen eine Variable mit dem foobar
akzeptiert
Für den Spielplatz benutze ich die folgenden Nachteile trukt. Aber mit einem externen Paket können Sie die foobar.Boom verwenden() anstelle von println
type foobar struct{}
func (fb foobar) Boom(s string) {
fmt.Println(s)
}
var f Boomer = foobar{}
https://play.golang.org/p/200WIok1pL
4) In Ihrem Test eine Test boomer implementieren
type testboomer struct{
boomstring string
}
func (tb *testboomer) Boom(s string) {
tb.boomstring = s
}
Nachdem Sie die Funktion moo() genannt, zeigt der Testboomer.boomstring den Wert an.
sollten Sie in der Abhängigkeit übergeben wie 'func moo (boom func(), s-String)' siehe https://play.golang.org/p/CV14zqZvOk – Plato