【发布时间】:2016-04-30 06:32:14
【问题描述】:
我是 Go 的新手,但我来自 C++ 学校。我只想做一个项目,把逻辑拆分成多个文件。
在 C++ 中,我只需要在我的 main_file.cpp 上添加一个
#include "my_own_lib.hpp"
(类似于 Node.js 中的 module.exports 和 require('relative/path/to/my-own-lib'))
就是这样。在 Go 中,我遵循相同的逻辑,但结果是:
$ go run main.go
main.go:4:8: open /Users/mt/Documents/Codes/go/src/github.com/mt/Apollo/tst: no such file or directory
我的文件:
main.go
package main
import "fmt"
import "./tst"
func main() {
fmt.Println("just testing")
tst.p()
}
tst.go
package tst
import "fmt"
func p() {
fmt.Println("ola")
}
当然我的文件结构是:
myFolder/
|- main.go
|_ tst.go
谁能告诉我这样做的正确方法是什么?
【问题讨论】:
-
请务必阅读有关包如何在 go 中工作的信息。例如:golang.org/doc/code.html。包始终位于具有包名的文件夹中。在您的示例中, tst.go 应该位于名为 tst 的文件夹中
-
另外,当使用“go run”时,您必须指定所有要编译和运行的文件。 Includes 仅在您的 gopath 中查找包。在这种情况下,您可能想要执行“go run *.go”来实际运行这两个文件。你只在不同的“包”中导入东西,这也将在与你的“包主”代码不同的目录中