GOROOT与GOPATH
重点说一下这个GOPATH,可以设置为任意路径,例如我设置为GOPATH=C:\Users\fan\go,然后在下面新建3个文件夹,pkg, src, bin,当你使用go get命令时,下载的package就会放到src目录下,一些可执行文件会放到bin目录下,例如一些工具。
在不使用依赖管理工具的情况下,我们新建项目都需要放在src目录下,或者将项目路径加入到GOPATH中,否则build时无法找到相关依赖。
// 例如我新建了kafka-connector,目录树如下
fan/go/src
----kafka-connector
--------consumer
------------consumer.go
--------producer
------------producer.go
--------main.go
在main.go中需要使用consumer.go(package consumer)和producer.go(package producer)中定义的函数,采用以下方法引入:
import (
"kafka-connector/consumer"
"kafka-connector/producer"
)
Packages的引入
由于一些网络原因,部分package无法使用go get的方式直接下载。刚开始学习的时候,大多数人遇到的就是以golang.org/x开头的相关package无法下载。由于这些无法下载的包都是托管在github上的,可以采取间接的方式来下载。
- 首先找到所需要的package在github上的位置,例如我们需要golang.org/x/text下的包:
// github仓库位置
https://github.com/golang/text
- 使用git clone命令下载到本地
// 我的电脑上GOPATH=C:\Users\fan\go
// 在C:\Users\fan\go\src\golang.org\x\目录下执行(路径不存在就需要新建相关文件夹):
> git clone https://github.com/golang/text
- 使用go install编译安装
// 需要注意在本例中不是 go install github.com/golang/text
>go install golang.org/x/text
// 然后就可以使用相关package了
> import "golang.org/x/text/transform"
其他无法正常下载的package都可以采用这种方式,例如: google.golang.org/grpc
Go module
这个GOPATH其实有点烦人,同时依赖的管理比较麻烦。所以出现各种依赖管理工具,目前官方有正式的依赖管理工具。可以参考以下文章:
有疑问加站长微信联系(非本文作者)