假设我在main.go
中
package main
import "foobar"
func moo() {
foobar.Boom("!")
}
func main() {
moo()
}
如何截取Boom
并确保使用正确的参数调用它?
Go的方法是使用接口。即使您无法更改foobar包。
1)创建婴儿潮一代界面
type Boomer interface{
Boom(string)
}
2)更改moo()接受婴儿潮一代
func moo(b Boomer) {
b.Boom("!")
}
3)使用foobar添加变量
对于操场,我使用以下结构。但是使用extern包,您可以使用foobar。Boom()而不是Println
type foobar struct{}
func (fb foobar) Boom(s string) {
fmt.Println(s)
}
var f Boomer = foobar{}
https://play.golang.org/p/200WIok1pL
4)在测试中,您实现了测试婴儿潮
type testboomer struct{
boomstring string
}
func (tb *testboomer) Boom(s string) {
tb.boomstring = s
}
调用moo()函数后,testboomer.boomstring将显示该值。