golang 环境总是搭建失败 按照教程来的 见图 怎么解决?

大boss
  • 126

图片描述图片描述

图片描述

问题描述

图片描述

你期待的结果是什么?实际看到的错误信息又是什么?

图片描述
继续上午 晚上回来用windOW就这么一弄 就成功了。很神奇最上面一个就是晚上的截图

回复
阅读 1.7k
4 个回答
✓ 已被采纳

首先你的命令部队,go install是用来安装的,而安装的的包golang.org/x/sys不是一个可执行的包,你需要使用go get golang.org/x/sys来下载这个包。
其次,看你第一张图的报错信息,应该用的是modules来管理的包依赖,这个时候,需要在根目录使用go mod tidy来处理依赖问题。


解释下 golang 的go getgo mod两种包的关系吧。
golang的module之前项目依赖包直接使用go get 来获取,源码会放入GOPATH/src/下。
在golang 1.11版本之后,加入了module来管理包依赖,在项目的根目录会有一个go.mod文件来记录当前项目锁依赖的包和包的版本,包的源码放在GOPATH/pkg/mod/下。

这是两种不同的包管理方式。

go get = git clone + go install 从指定源上面下载或者更新指定的代码和依赖,并对他们进行编译和安装

其实错误提示已经说的很清楚了,不是找不到,而是包下面没有 go 文件,golang.org/x/net 下面有很多子包,你需要执行对应有 Go 文件的包,比如 golang.org/x/net/html。

$ go get golang.org/x/net/html

查看 $GOPATH/pkg/ 下的相应路径,将会找到 html.a 的静态库文件。

一个目录是一个包,在顶层编译并不会自动将底层的包编译好,也就是如果你要编译 golang.org/x/net/html 包,通过 go get golang.org/x/net 是不行的,比如明确指定 golang.org/x/net/html 才行。

Go package 主要是两种类型。

一个是生成可执行文件的包,包名固定为 main,其中必须有一个 main 入口函数,生成的可执行文件目录默认在 go 安装路径下的 bin/ 目录。

另外一种可以生成静态库文件的包,非 main 包,go get/install 会在 pkg 目录下生成相应的 .a 文件,比如上面的 golang.org/x/net/html 包。.a 文件的存放路径在 GOPATH 的 pkg 目录下。

宣传栏