根据设置:
$GOPATH/
github.com/ddavison/project/
subpackage/
lib.go
main.go
package subpackage
...
func Hello() {
fmt.Println("hello")
}
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
?
答案 0 :(得分:10)
Go的功能是一流的。将命名函数DoSomething
作为参数传递给lib函数。
如果允许其他任何内容引用main
,您就会有循环依赖。
package subpackage
...
type Complete func()
func Hello(complete Complete) {
fmt.Println("hello")
complete()
}
package main
...
func main() {
subpackage.Hello(DoSomethign)
}
func DoSomething() {
fmt.Println("done!")
}