dk1*_*123 47 command-line-interface go
我是Go的新人.我非常喜欢这种语言,但我很快意识到由于程序大小的增加,我需要开始分割文件.
go run main.go
(main.go是我的main()函数的文件)
没有工作,我打了一段时间的障碍,因为我不知道如何使我的程序工作.
一些快速搜索引导我得到答案
go run main.go other.go ..
通过键入我所package main
包含的所有文件,我可以运行编程.然而,每次这样做都非常麻烦和令人沮丧.
我写了以下自我回答的问题,以防止像我这样可能再次遇到这个障碍的人.
Rob*_*ier 66
正如Nate Finch所说:
Go run is ...真的只适用于非常小的程序,通常只需要一个文件.
即使在unix上,go run *.go
也常常不正确.在任何具有单元测试的项目中(并且每个项目都应该有单元测试),这将给出错误:
go run: cannot run *_test.go files (something_test.go)
Run Code Online (Sandbox Code Playgroud)
它也会忽略构建限制,因此_windows.go
在Unix上编译(或尝试编译)文件,这不是你想要的.
已经有一些关于go run
像其他go
命令一样进行工作的讨论,并且有一个开放的CL(5164).Go 1.4目前正在考虑中.与此同时,所有平台上推荐的解决方案是:
go build && ./<executable>
Run Code Online (Sandbox Code Playgroud)
dk1*_*123 22
Unix相关系统
go run *.go
在大多数情况下就足够了.
如果这会导致错误,请继续执行以下方法.
Windows系统(在其他情况下go run *.go
不起作用)
令牌扩展在Windows命令行中不起作用,因此上述操作无效并显示错误.go run *.go
由于当前的编译器限制,在某些情况下也可能无法在OS中工作.
在这些情况下,使用
go build && foo.exe
其中foo.exe
是生成的.exe文件的名称.如果您可能不知道可执行文件的名称是什么,请首先
go build
并检查生成的.exe文件的名称.然后,使用包含文件名的方法.
这两种方法将构建并运行当前目录中的所有.go文件,而且操作简单.
Rub*_*n S 19
您可以.go
使用此bash构造运行所有文件,不包括测试:
go run $(ls -1 *.go | grep -v _test.go)
Run Code Online (Sandbox Code Playgroud)
r.s*_*cky 18
最好的方法是像这样运行它:
go run !(*_test).go
Run Code Online (Sandbox Code Playgroud)
它会跳过所有测试文件,这正是您避免错误所需的.
另一个建议是:
go build && ./<executable>
Run Code Online (Sandbox Code Playgroud)
有点烦人.您必须始终删除可执行文件以避免被git标记.当然,你可以把它放在gitignore,但我很懒,这是一个额外的步骤.
Mac*_*ias 13
最后,我们现在可以使用:
go run .
Run Code Online (Sandbox Code Playgroud)
感谢:https : //github.com/golang/go/issues/22726#issuecomment-345841019
小智 5
如果我正确理解您的问题,则需要导入其他代码作为库。
小例子
./testing/main.go:
package main
import "fmt"
import L "testing/lib"
func main() {
fmt.Println("Hello from main()")
L.Somefunc()
}
Run Code Online (Sandbox Code Playgroud)
./testing/lib/somelib.go:
package lib
import "fmt"
func Somefunc() {
fmt.Println("Hello from Somefunc()")
return
}
Run Code Online (Sandbox Code Playgroud)
推出 - go run main.go
归档时间: |
|
查看次数: |
48926 次 |
最近记录: |