这是因为获取golang.org/x/...时需要翻墙,而我这里没有翻墙,不过没关系
设置下代理即可:
// bash mac
export GOPROXY=https://goproxy.io
// powershell windows
$env:GOPROXY = https://goproxy.io
然后再当前目录下
用powershell 执行命令:
go mod download
相关命令:
go mod init:初始化modules
go mod download:下载modules到本地cache
go mod edit:编辑go.mod文件,选项有-json、-require和-exclude,可以使用帮助go help mod edit
go mod graph:以文本模式打印模块需求图
go mod tidy:检查,删除错误或者不使用的modules,下载没download的package
go mod vendor:生成vendor目录
go mod verify:验证依赖是否正确
go mod why:查找依赖
go test 执行一下,自动导包
go list -m 主模块的打印路径
go list -m -f={{.Dir}} print主模块的根目录
go list -m all 查看当前的依赖和版本信息
linux 编译
GOOS=linux;GOARCH=amd64;CGO_ENABLED=0
-o 指定编译的输出文件目录
补充:win10下go mod 与gopath
GOPATH跟GOROOT不同,它是我们指向的工作空间。我们运行一个项目时需要导入依赖包,默认情况下会在我们配置的go环境的src文件下去查找,比如本身自带的“fmt”,“os”诸如此类等都在此包下
go对自己配置的包的引用有严格的限制,同个目录的包是一样的,一般包名都一目录名命名,不同目录间的包可以相互引用但前提是你这个项目需要放在GOPATH路径下的src文件内才可以相互引用 在其它的目录下是引用不了的。
对于一些项目需要从github上面获取依赖这样的上面的方式效率可能不高,因为国内go get因为网络问题可能下载get不到或者太慢,这时候就可以摒弃gopath转而使用go mod了,不在需要在gopath下新建项目了,可以在任何你喜欢的目录下新建,win10具体操作如下:
win +r打开cmd
go env -w GO111MODULE=on(默认模式为auto,还有off模式 on模式是使用模块,gopath不生效;off不适用模块,gopath生效;自己写的一些项目如果不需要从网上导入依赖的话可以切换成go env -w GO111MODULE=off模式,反正就是一条命令,不用再涉及其它的环境配置)
然后就可以在任意路径新建项目了,这里比如我在D:\file\github\golang\code\chapter2\新建一个sample项目,然后再
D:\file\github\golang\code\chapter2\sample下新建一个main.go文件(这是项目的起点)
然后在该目录下打开cmd
我这里是因为已经生成了所以提示exists build命令也可以指定单个.go文件进行编译,但是如果是在main.go起点文件的目录下build,它可以循着main.go中导入的依赖将项目中的其它.go文件一同build
会在该目录下生成一个go.mod文件,现在试下你的项目能不能运行
可以在cmd下执行go env这里面有很多参数可以查看
以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。如有错误或未考虑完全的地方,望不吝赐教。