Vit*_*aly 78 compilation build go
所以我有一个由三个文件组成的小程序,都属于同一个包(main),但是当我"go build main.go"时,构建不成功.当它只是一个文件(main.go)时一切正常.现在我花了一些力气来分离代码,看起来编译器无法找到从main.go中取出的东西并放入这两个其他文件(与main.go位于同一目录) .这导致"未定义'类型'"错误.
我读了一些关于设置GOPATH变量的内容,所以我试过了
set GOPATH=%cd%
go build main.go
Run Code Online (Sandbox Code Playgroud)
但那也行不通.
任何帮助表示赞赏.
Den*_*ret 82
假设您正在编写一个名为myprog的程序:
将所有文件放在这样的目录中
myproject/go/src/myprog/xxx.go
Run Code Online (Sandbox Code Playgroud)
然后添加myproject/go到GOPATH
并运行
go install myprog
Run Code Online (Sandbox Code Playgroud)
这样,如果需要,您将能够在myproject/go/src中添加其他包和程序.
参考:http://golang.org/doc/code.html
(这个文档总是被新手错过,并且一开始常常不明白.它应该得到Go团队IMO的最大关注)
Kis*_*aki 64
当您从代码分离main.go成例如more.go,您只需传递文件go build/ go run/ go install为好.
所以,如果你以前跑过
go build main.go
Run Code Online (Sandbox Code Playgroud)
你现在简单
go build main.go more.go
Run Code Online (Sandbox Code Playgroud)
作为进一步信息:
go build --help
Run Code Online (Sandbox Code Playgroud)
状态:
If the arguments are a list of .go files, build treats them as a list
of source files specifying a single package.
Run Code Online (Sandbox Code Playgroud)
请注意,go build并go install从不同go run的是,前两个国家的期望包名作为参数,而后者则希望去文件.但是,前两个也会像go install一样接受go文件.
如果您想知道:build将只build包装/文件,install将在您的GOPATH中生成对象和二进制文件,run并将编译并运行您的程序.
poo*_*lla 28
你也可以跑
go build
Run Code Online (Sandbox Code Playgroud)
在项目文件夹myproject/go/src/myprog中
然后你可以输入
./myprog
Run Code Online (Sandbox Code Playgroud)
运行你的应用程序
Ina*_*mus 28
从 Go 1.11+ 开始,不再推荐使用 GOPATH,新的方式是使用 Go Modules。
simple:创建目录:
mkdir simple
cd simple
Run Code Online (Sandbox Code Playgroud)创建一个新模块:
go mod init github.com/username/simple
# Here, the module name is: github.com/username/simple.
# You're free to choose any module name.
# It doesn't matter as long as it's unique.
# It's better to be a URL: so it can be go-gettable.
Run Code Online (Sandbox Code Playgroud)将所有文件放在该目录中。
最后,运行:
go run .
Run Code Online (Sandbox Code Playgroud)或者,您可以通过构建它来创建一个可执行程序:
go build .
# then:
./simple # if you're on xnix
# or, just:
simple # if you're on Windows
Run Code Online (Sandbox Code Playgroud)有关更多信息,您可以阅读此。
从 1.11 开始,Go 已经包含了对版本模块的支持,正如这里提出的那样。最初的原型 vgo 于 2018 年 2 月发布。 2018 年 7 月,版本化模块登陆 Go 主存储库。在 Go 1.14 中,模块支持被认为可以用于生产,并鼓励所有用户从其他依赖管理系统迁移到模块。
这取决于您的项目结构。但最直接的是:
go build -o ./myproject ./...
Run Code Online (Sandbox Code Playgroud)
然后运行./myproject。
假设你的项目结构是这样的
- hello
|- main.go
Run Code Online (Sandbox Code Playgroud)
然后你只需转到项目目录并运行
go build -o ./myproject
Run Code Online (Sandbox Code Playgroud)
然后./myproject在shell上运行。
或者
# most easiest; builds and run simultaneously
go run main.go
Run Code Online (Sandbox Code Playgroud)
假设您的主文件嵌套在子目录中,例如 cmd
- hello
|- cmd
|- main.go
Run Code Online (Sandbox Code Playgroud)
然后你会跑
go run cmd/main.go
Run Code Online (Sandbox Code Playgroud)
您可以使用
go build *.go
go run *.go
Run Code Online (Sandbox Code Playgroud)
两者都可以使用
go build .
go run .
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
118134 次 |
| 最近记录: |