GoLang之环境变量和Project目录配置的方法
来源:互联网 发布:兴华软件 编辑:程序博客网 时间:2024/06/02 06:23
2013-12-29 wcdj
0 大纲
本文总结在安装Go时如何配置GoLang的环境变量和创建一个Project的目录结构。下文描述以*NIX环境为主,Windows方法类似。
1 安装及环境变量
Go的安装方法包括:默认安装和自定义安装,官方的描述请参看这里:http://golang.org/doc/install
其中:
(1) 默认安装比较简单,但需要root权限,默认安装路径是:/usr/local/go;
(2) 自定义安装需要另外配置GOROOT环境变量;
本文采用默认安装,环境是OS X 10.9.1。下面的环境变量需要添加到当前用户的 .bashrc 配置中。其中:
(1) 显示将Go的bin安装目录配置在PATH环境变量中;
(2) 注意GOPATH不是Go的安装目录,而是用户的工作目录(可自定义),Go命令依赖GOPATH这个重要的环境变量。
# Golang enviroment variableexport GOROOT=/usr/local/goexport PATH=$PATH:$GOROOT/binexport GOPATH=/Users/gerryyang/code/go/mygo
2 Project目录结构
GOPATH的说明:
(a) GOPATH允许多个目录,当有多个目录时,请注意分隔符,*NIX下是冒号,Windows下是分号。当有多个GOPATH是,默认将go get的内容放在第一个目录下。
(b) GOPATH目录约定有三个子目录:
--- src 存放源代码(比如:.go / .c / .h / .s 等)
--- pkg 编译后生成的文件(比如:.a)
--- bin 编译后生成的可执行文件 (不建议把这个目录放在PATH下,虽然方便!)
一个简单的Project,计算一个数的平方根,GOPATH如上所配,初始的目录结构如下所示:
注意:建议package的名称和目录名保持一致,例如,main.go在mathapp包内,并在mathapp目录下。
sqrt.go
package mymathfunc Sqrt(x float64) float64 {z := 0.0for i := 0; i < 1000; i++ {z -= (z*z - x) / (2 * x)}return z}
main.go
package mainimport ("fmt""mymath")func main() {fmt.Printf("use my package to calc, Sqrt(2)=%v\n", mymath.Sqrt(2))}
由于我们已经配置好了GOPATH环境变量,因此可以通过两种方法编译安装用户自定义的包:
(1) 进入对应的应用包目录,然后执行 go install,即可完成安装;
(2) 在任意的目录下执行代码 go install yourapp;
针对上面的例子,通过如下步骤进行编译安装:
(1) 进入 mymath/ 下,执行 go install mymath,此时目录结构如下:
(2) 进入 mathapp/ 下,执行 go build,此时目录结构如下:
(3) 进入 mathapp/ 下,执行 go install,此时目录结构如下:
(4) 其实(2)和(3)步可以合并成一步,进入 mathapp/ 下,直接执行 go install,此时目录结构如下:
(5) 执行测试程序,进入 bin/ 下并执行程序:
3 参考
[1] Go Web编程
[2] http://golang.org/doc/install
- GoLang之环境变量和Project目录配置的方法
- golang在linux和windows下的安装以及环境变量的配置
- 环境变量的配置方法
- Java学习笔记之JDK配置的作用和方法(含set设置临时环境变量)
- Visual Studio 2008 环境变量、工作目录、vc++目录、 命令等 的配置和作用
- VS配置头文件目录和库目录的方法
- java环境变量的配置方法
- 配置JDK环境变量的方法
- java环境变量的配置方法
- Mac 配置环境变量的方法
- Mac 配置环境变量的方法
- java环境变量的配置方法
- intellij idea怎么在project目录下查看一个类的所以方法和属性
- Linux操作系统下三种配置环境变量的方法(Linux查看环境变量当前信息和查看命令)
- jdk目录各文件夹的作用以及环境变量的配置和含义
- linux之环境变量的配置
- wamp配置project目录和外部访问权限
- golang 环境变量配置 及所遇到问题解决
- DataGridView控件用法合集
- OpenGL ES 可用纹理单元数量与大量纹理的思考
- 9.0怎样学习英语?
- Minimum Path Sum
- 参加某nb业务的后台架构分享
- GoLang之环境变量和Project目录配置的方法
- sql 学习技巧(看到不错,拿来学习)
- "此操作要求连接到 'master' 数据库。无法创建与 'master' 数据库之间的连接,这是因为已打开原始数据库连接,并且已从连接字符串中删除凭据。请提供未打开的连接。"
- jsp中的scriptlet
- java多线程:volatile及Timer用法示例
- Resolution of error reporting when using maven3 test function together with nexus
- 在FFMPEG中使用libRTMP的经验
- PHP的URL处理
- 关于C++构造函数