文章目录
一、Go 安装
进入Go下载网站:https://golang.google.cn/dl
1、Windows
下载Windows平台的安装包到本地,然后运行安装包,跟着提示走就可以安装完成。
2、Linux
- 下载Linux平台的压缩包到本地,解压到任意目录,如:
/opt
。 - 编辑
/etc/profile
,在末尾添加:
export GOROOT=/opt/go
export PATH=$GOROOT/bin:$PATH
- 执行
source /etc/profile
,然后重启(否则只在当前终端中有效,新开终端需要再次执行命令才生效)。
二、查看版本
go version
三、查看环境变量
go env
四、开启 Go Modules
go env -w GO111MODULE=on
这里的GO111MODULE
是为了使用用go mod
。
五、设置 Go 模块代理
go env -w GOPROXY=https://goproxy.cn,direct
GOPROXY
的默认值是:https://proxy.golang.org,direct
,但是proxy.golang.org
在国内是无法访问的,所以需要在开启Go Modules时,同时设置国内的Go模块代理。GOPROXY
的值是一个以英文逗号“,”分割的Go模块代理列表,允许设置多个模块代理,假设你不想使用,也可以将其设置为“off”,这将会禁止Go在后续操作中使用任何Go模块代理。direct
是一个特殊指示符,用于指示Go回源到模块版本的源地址去抓取(比如GitHub等),场景如下:当值列表中上一个Go模块代理返回404或410错误时,Go自动尝试列表中的下一个,遇见direct
时回源,也就是回到源地址去抓取,而遇见EOF
时终止并抛出类似“invalid version: unknown revision…”的错误。
链接:Goproxy 中国
六、下载和安装 Go Tools
- 方法1
go get -u golang.org/x/tools/...
链接:golang/tools - 方法2
在VS Code中按下快捷键Ctrl+Shift+P
打开命令面板,在搜索框中输入:Go: Install/Update Tools
,点击进去然后全选,点击确定等待安装。如果出现失败就换下代理地址,安装后重启VS Code。
七、安装 VS Code 调试工具
go get -v -u github.com/peterh/liner github.com/derekparker/delve/cmd/dlv
八、go mod 常用命令
go mod
是一种包的管理方式,modules和传统的GOPATH
不同,不需要包含例如src
,bin
这样的子目录,一个源代码目录甚至是空目录都可以作为module,只要其中包含有go.mod
文件。
1、初始化模块
go mod init 包名
会在对应的目录下生成一个go.mod
文件。
2、更新现有依赖
go mod tidy
根据go.mod
文件来整理现有的依赖,删除未使用的依赖。
3、把项目依赖库下载到项目内部
go mod vendor
我们基go mod
机制来管理我们项目的依赖库版本,其中go.mod
记录了依赖库版本信息。一般第三方依赖库(包括公司内网gitlab上的依赖库),其源码都不被包含在我们的项目内部,而是在编译的时候go连接公网、内网下载到本地GOPATH
,然后编译。问题是,有些时候需在无公网、无内网(无法连接内网gitlab)的情况下编译go项目,如何做呢?
在此时,需使用go mod vendor
将项目的依赖库下载到项目内部,作为项目的一部分来编译。
九、使用私有仓库
1、配置ssh替代http
推荐使用ssh
替代http
(参考:Git笔记 的第2点设置仓库地址代理
)例如:
# 此处使用了别名, 避免包引用名称太长
git config --global url."ssh://git@192.168.3.33:3333/".insteadOf "https://mylib.com/"
2、设置私有仓库
设置私有仓库,例如:
go env -w GOPRIVATE=mylib.com/go/base.git
3、拉取私有仓库
拉取私有仓库,例如:
go get mylib.com/go/go/base.git@master
可能遇到问题:
go: mylib.com/go/go/base.git@master-0.20240710060229-0dcc439c334e: invalid version: git ls-remote -q origin in /root/workspace/golang/pkg/mod/cache/vcs/0767fa6834f24d58177f73b8fb123465896ff4299edfdc04a7e1cc68f73e52da: exit status 128:
fatal: unable to look up mylib.com (port 9418) (No address associated with hostname)
原因: 没有配置ssh密钥导致的
解决方案: 配置git ssh
密钥,并手动拉取一次git clone https://mylib.com/go/base.git
4、代码中使用
import (
logger "mylib.com/go/go/base.git/logger"
"mylib.com/go/go/base.git/database"
)