41

Golang初学者的踩坑之旅

 5 years ago
source link: https://studygolang.com/articles/19199?amp%3Butm_medium=referral
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

GOROOT与GOPATH

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

yEFrIbQ.png!web

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其实有点烦人,同时依赖的管理比较麻烦。所以出现各种依赖管理工具,目前官方有正式的依赖管理工具。可以参考以下文章:


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK