Files
build-web-application-with-…/1.2.md
2012-08-20 23:31:50 +08:00

153 lines
4.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 1.2 GOPATH与工作空间
## GOPATH设置
go 命令依赖一个重要的环境变量:$GOPATH
在类似 Unix 环境大概这样设置:
GOPATH=/home/apple/mygo
Windows 系统请注意分隔符多个gopath的时候是分号非冒号新建一个环境变量名称叫做GOPATH。
GOPATH=c:/mygo
以上 $GOPATH 目录约定有三个子目录:
- src 存放源代码(比如:.go .c .h .s等
- pkg 编译后生成的文件(比如:.a
- bin 编译后生成的可执行文件(为了方便,可以把此目录加入到 $PATH 变量中)
以后我所有的例子都是以mygo作为我的gopath目录
## 应用目录结构
建立包和目录:$GOPATH/src/mymath/sqrt.go包名"mymath"
以后自己新建应用或者一个代码包都是在src目录下新建一个文件夹文件夹名称代码包名称当然也允许多级目录例如在src下面新建了目录$GOPATH/src/github.com/astaxie/beedb 那么这个包名称就是“github.com/astaxie/beedb”
执行如下代码
cd $GOPATH/src
mkdir mymath
新建文件sqrt.go内容如下
// $GOPATH/src/mymath/sqrt.go源码如下
package mymath
func Sqrt(x float64) float64 {
z := 0.0
for i := 0; i < 1000; i++ {
z -= (z*z - x) / (2 * x)
}
return z
}
这样我的应用包目录和代码已经新建完毕注意package的名称必须和目录名保持一致
## 编译应用
上面我们已经建立了自己的应用包,如何进行编译安装呢?有两种方式可以进行安装
1、只要进入对应的应用包目录然后执行`go install`,就可以安装了
2、在任意的目录执行如下代码`go install mymath`
安装完之后,我们可以进入如下目录
cd $GOPATH/pkg/平台名/mymath.a
这个.a文件是应用包相当于一个函数库一样那么我们如何进行调用呢
接下来我们新建一个应用程序来调用
新建应用包mathapp
cd $GOPATH/src
mkdir mathapp
vim main.go
// $GOPATH/src/mathapp/main.go 源码:
package main
import (
"mymath"
"fmt"
)
func main() {
fmt.Printf("Hello, world. Sqrt(2) = %v\n", mymath.Sqrt(2))
}
如何编译程序呢?进入该应用目录,然后执行`go build`那么在该目录下面会生成一个mathapp的可执行文件
./mathapp
输出如下内容
Hello, world. Sqrt(2) = 1.414213562373095
如何安装该应用,进入该目录执行`go install`,那么在$GOPATH/bin/下增加了一个可执行文件mathapp,这样可以在命令行输入如下命令就可以执行
mathapp
也是输出如下内容
Hello, world. Sqrt(2) = 1.414213562373095
## 获取远程包内容
go语言有一个获取原承包的工具就是`go get`目前go get支持多数开源社区(例如github、googlecode、bitbucket、Launchpad)
go get github.com/astaxie/beedb
通过这个命令可以获取相应的源码对应的开源平台采用不同的源码控制工具例如github采用git、googlecode采用hg所以要想获取这些源码必须先安装相应的源码控制工具
通过上面获取的代码在我们本地的源码相应的代码结构如下
$GOPATH
src
|--github.com
|-astaxie
|-beedb
pkg
|--相应平台
|-github.com
|--astaxie
|beedb.a
go get本质上可以理解为首先第一步是通过源码工具clone代码到src下面然后执行`go install`
在代码中如何使用远程包很简单的就是和使用本地包一样只要在开头import相应的路径就可以
import "github.com/astaxie/beedb"
## 程序的整体结构
通过上面建立的我本地的mygo的目录结构如下所示
bin/
mathapp
pkg/
平台名/ 如darwin_amd64、linux_amd64
mymath.a
github.com/
astaxie/
beedb.a
src/
mathapp
main.go
mymath/
sqrt.go
github.com/
astaxie/
beedb/
beedb.go
util.go
从上面的结构我们可以很清晰的看到bin目录下面存的是编译之后可执行的文件pkg下面存放的是函数包src下面保存的是应用源代码
## links
* [目录](<preface.md>)
* 上一节: [GO安装](<1.1.md>)
* 下一节: [GO shell命令](<1.3.md>)
## LastModified
* $Id$