我在玩和学习beego的框架,但是我的hello world示例没有运行,根据我的判断,beego是一个基于os.Args的chdir,程序在那里运行。这就是为什么应用程序运行,但找不到视图目录。
因此,回溯到一个更简单的级别,文件名'example.go':
package main
import (
"fmt"
"os"
)
func main() {
fmt.Println(os.Getwd())
fmt.Println(os.Args[0])
}将产出:
/<directory 'go run this_file.go' was run in>/ <nil>
/tmp/go-build178877254/command-line-arguments/_obj/exe/example我不太明白为什么会这样。我的第一个想法是我正在使用gvm (go版本管理器),这是因为有什么问题发生了。任何帮助都很感激。
编辑:
显然,
产生更好的、预期的和成功的结果:
<directory './example' was run in>/ <nil>
<directory './example' was run in>/发布于 2013-06-10 09:00:08
go run将将源代码编译(go build)到系统TEMP或TMP环境变量中,然后从那里执行文件。它实际上不是为运行生产代码而设计的,因为编译和执行显然比仅仅执行要花费更长的时间。
通常的做法是使用go run进行开发,然后使用go build并分发二进制文件。go run确实为开发人员在一个命令中快速测试代码提供了方便。在多个不同的系统之间运行可移植源代码确实有一些有用的好处,但是,如果要将代码部署到所有这些系统中,通常在部署中包括go build是正常的。查看Go命令的完整指南
为了让事情变得更简单,可以只对一台机器上的多个目标体系结构编写交叉编译 Go代码,然后将二进制文件部署到相关的机器上。这意味着目标系统甚至不需要安装Go。除了上面的链接之外,您还可以查看goxc,它提供了一种更简单的方法,单行交叉编译工具。
https://stackoverflow.com/questions/17014329
复制相似问题