仓库源文站点原文


layout: post title: "Go的环境配置与应用编译" categories: Go tags: GOPATH

author: 张乘辉

GOPATH

GOPATH 是 Go 命令依赖的一个路径,也是 Go 项目放置的地方,在类 unix 系统下设置 GOPATH:

export GOPATH=/Users/zhangchenghui/.go

查看 Go 环境变量:

go env

gopath

$GOPATH 目录有三个约定俗成的目录,一定要彻底理解:

gopath

应用编译

在 GOPATH 的 src 创建一个项目:

cd $GOPATH/src
mkdir mypakage
cd mypakage

新建 test.go:

// $GOPATH/src/mypakage/test.go
package mypakage

import "fmt"

func Test() {
     fmt.Println("test~~~~~")
}

Go 语言有个约定俗成的做法就是函数首字母大写相当于 Java 的 public 方法,小写相当于 Java 的 private 方法。

在该项目目录中执行 go install 或者在任意目录下执行 go install mypakage,请注意该文件的包 package mypakage,意味着编译后会在 pkg 目录生成一个包。

gopath

接下来我们就可以引用这个包里面的方法啦,这和 maven 的 mvn clean install 一个道理。

在 src 目录中新建一个应用:

cd $GOPATH/src
mkdir myapp
cd myapp

新建 main.go:

// $GOPATH/src/myapp/main.go
package main

import (
    "fmt"
    "mypakage"
)

func main() {
  mypakage.Test()
  fmt.Println("hello, go")
}

接下来就是要编译这个应用了,进入该应用目录,执行 go install,由于该应用直接导入的是pakage main 包,它是Go语言中唯一一个可以编译后直接生成可执行文件的包,因此会在 $GOPATH/bin 下生成一个可执行文件 myapp:

gopath

在任意路径下,执行:

myapp

输出如下内容:

gopath

其实在该应用目录下也可执行 go build 命令进行编译,会在当前目录下生成可执行文件,而不会安装在 bin 目录下。

gopath

拉取远程包

Go 语言要如何获取远程包呢?在 Java 开发中,我们我可以通过 maven 自动地从 maven 中央仓库中下载依赖到.m2本底仓库中,但是在 Go 开发中,我们只需要使用 go get 指令就可以从远程拉取依赖包了:

go get github.com/astaxie/beego

这条命令就会将源码下载到 src 目录中,并将源码编译后安装到 pkg 目录中:

gopath

因此,go get 相当于 git clone 源码下来,再执行 go install。