Golang初学者的踩坑之旅

GOROOT与GOPATH

重点说一下这个GOPATH,可以设置为任意路径,例如我设置为GOPATH=C:\Users\fan\go,然后在下面新建3个文件夹,pkgsrcbin,当你使用go get命令时,下载的package就会放到src目录下,一些可执行文件会放到bin目录下,例如一些工具。

1.1 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上的,可以采取间接的方式来下载。

  1. 首先找到所需要的package在github上的位置,例如我们需要golang.org/x/text下的包:
// github仓库位置
https://github.com/golang/text
  1. 使用git clone命令下载到本地
// 我的电脑上GOPATH=C:\Users\fan\go
// 在C:\Users\fan\go\src\golang.org\x\目录下执行(路径不存在就需要新建相关文件夹):
> git clone https://github.com/golang/text
  1. 使用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其实有点烦人,同时依赖的管理比较麻烦。所以出现各种依赖管理工具,目前官方有正式的依赖管理工具。可以参考以下文章:

  1. Introduction to Go Modules
  2. 跳出Go module的泥潭

你可能感兴趣的:(Golang初学者的踩坑之旅)