如何访问主程序包中的功能?

时间:2015-03-16 13:10:15

标签: go

根据设置:

$GOPATH/
  github.com/ddavison/project/
    subpackage/
      lib.go
    main.go

lib.go

package subpackage
...
func Hello() {
  fmt.Println("hello")
}

main.go

package main
...
func main() {
  ...
}

func DoSomething() {
  fmt.Println("done!")
}

main.go ,我知道我可以通过

来调用lib.go的功能
import "github.com/ddavison/project/subpackage"
lib.Hello()

但我该如何反向,main.go lib.go调用方法?如何从DoSomething()致电lib.go

1 个答案:

答案 0 :(得分:10)

Go的功能是一流的。将命名函数DoSomething作为参数传递给lib函数。

如果允许其他任何内容引用main,您就会有循环依赖。

lib.go

package subpackage
...

type Complete func()

func Hello(complete Complete) {
  fmt.Println("hello")
  complete()
}

main.go

package main
...
func main() {
  subpackage.Hello(DoSomethign)
}

func DoSomething() {
  fmt.Println("done!")
}