https://github.com/astaxie/build-web-application-with-golang/blob/master/zh/01.2.md
Windows 环境:
下面我就以mymath为例来讲述如何编写应用包:
cd $GOPATH/src mkdir mymath // 我的环境:$GOPATH = c:\mygo
新建文件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 }
在默认的src文件夹下面的这个mypath是我自己新建的
编译应用
上面我们已经建立了自己的应用包,如何进行编译安装呢?有两种方式可以进行安装
1、只要进入对应的应用包目录,然后执行go install
,就可以安装了
2、在任意的目录执行如下代码go install mymath
红色的表示没有新建这个mypath文件夹和sqrt.go文件,绿色的是我新建好后运行的命令,没有报错误
安装完之后,我们可以进入如下目录
cd $GOPATH/pkg/${GOOS}_${GOARCH} //可以看到如下文件 mymath.a
我的路径(查看刚才生成的文件路径):
C:\Go\pkg\windows_amd64
这个.a文件是应用包,那么我们如何进行调用呢?接下来我们新建一个应用程序来调用这个应用包,新建应用包mathapp
cd $GOPATH/src
mkdir mathapp
cd mathapp
vim main.go
这时候切换出Go的系统默认安装目录,进入自己新建的环境目录(我的:C:\mygo\src\mathapp)
$GOPATH/src/mathapp/main.go
源码:
package main import ( "mymath" "fmt" ) func main() { fmt.Printf("Hello, world. Sqrt(2) = %v\n", mymath.Sqrt(2)) }
可以看到这个的package是main
,import里面调用的包是mymath
,这个就是相对于$GOPATH/src
的路径,如果是多级目录,就在import里面引入多级目录,如果你有多个GOPATH,也是一样,Go会自动在多个$GOPATH/src
中寻找。
如何编译程序呢?进入该应用目录,然后执行go build
,那么在该目录下面会生成一个mathapp的可执行文件