根据设置:
$GOPATH/
github.com/ddavison/project/
subpackage/
lib.go
main.go
Run Code Online (Sandbox Code Playgroud)
package subpackage
...
func Hello() {
fmt.Println("hello")
}
Run Code Online (Sandbox Code Playgroud)
package main
...
func main() {
...
}
func DoSomething() {
fmt.Println("done!")
}
Run Code Online (Sandbox Code Playgroud)
从main.go,我知道我可以lib.go通过这样做来调用函数
import "github.com/ddavison/project/subpackage"
lib.Hello()
Run Code Online (Sandbox Code Playgroud)
但是,我该怎么办逆,调用从方法main.go从lib.go?我怎么能叫DoSomething()的lib.go?
Cri*_*ole 11
Go的功能是一流的.将命名函数DoSomething作为参数传递给lib函数.
如果允许其他任何内容引用,您将拥有循环依赖main.
package subpackage
...
type Complete func()
func Hello(complete Complete) {
fmt.Println("hello")
complete()
}
Run Code Online (Sandbox Code Playgroud)
package main
...
func main() {
subpackage.Hello(DoSomethign)
}
func DoSomething() {
fmt.Println("done!")
}
Run Code Online (Sandbox Code Playgroud)