调用测试Golang导入的函数



假设我在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将显示该值。

最新更新