一、介绍
新接手一个服务,op-service,考虑到后期运维主要是换机器后要重新部署,所以这里整理下
二、包下载问题
由于默认从
proxy.golang.org
下载,而
proxy.golang.org
是google提供的服务,不翻墙的话访问不了,因此需要配置其它代理服务,以下修改下代理,配置成阿里的即可:
go env -w GOPROXY=https://mirrors.aliyun.com/goproxy/
设置后,go get就可以下载代码依赖的库(依赖库介绍见第三点:go module介绍)了。
参考:
golang gopm get -g -v 无法获取第三方库的解决方案 – 吾爱源码
三、go module
1、介绍
-
go module是go官方自带的
go依赖管理库
,在1.13版本正式推荐使用。 - go module可以将某个项目(文件夹)下的所有依赖整理成一个 go.mod 文件,里面写入了依赖的版本等,使用go module之后我们可不用将代码放置在src下。
- 使用 go module 管理依赖后会在项目根目录下生成两个文件 go.mod(会记录当前项目的所依赖)和go.sum(记录每个依赖库的版本和哈希值),具体可以看op-service项目。
2、GO111MODULE
GO111MODULE是 go modules 功能的开关,默认关闭,可通过设置GO111MODULE=on开启。
命令:go env -w GO111MODULE=on
3、Go mod使用方法
初始化模块:Go mod init <项目模块名称>
如op-service:
4、相关命令
Go mod命令
go mod init ⽣成 go.mod ⽂件
go mod download 下载 go.mod ⽂件中指明的所有依赖
go mod tidy 整理现有的依赖
go mod graph 查看现有的依赖结构
go mod edit 编辑 go.mod ⽂件
go mod vendor 导出项⽬所有的依赖到vendor⽬录
go mod verify 校验⼀个模块是否被篡改过
go mod why 查看为什么需要依赖某模块
四、go env修改
执行go env命令,可查看当前的环境变量的配置,如果想修改环境变量,可直接执行go env -w命令。
如:go env -w GOOS=windows
五、gopath
目前PC上我配置的gopath架构如下:
参考:GOPATH 详解_勤天的博客-CSDN博客_gopath 设置
六、vscode运行golang代码
虽然安装了code runner,但是运行main.go的时候会报错,如下:
后来使用方式:
在main.go所在的目录下执行命令:go build,执行后会生成xxx.exe可执行文件
然后双击打开即可。
十、main.go与main_test.go
在 Golang 项目中,`cmd` 目录下通常包含可执行程序的入口文件。关于 `main.go` 和 `main_test.go` 两个文件,它们的作用和区别如下: – `main.go`: 这是程序的主入口文件,里面定义了程序的执行逻辑,通常包括初始化配置、创建相关组件、处理命令行参数以及启动主程序等内容。当你运行 `go build main.go` 或 `go run main.go` 之类的指令时,编译器会执行这个文件所定义的逻辑。 – `main_test.go`: 这是程序主入口文件的测试文件,用于编写针对 `main.go` 中的函数和逻辑的单元测试和集成测试。`main_test.go` 通常包含一些测试用例,它们会被 Go 编译器执行,以验证 `main.go` 中的代码是否能够按照预期工作。你可以运行 `go test` 或者 `go test -v` 来执行这些测试。 总之,`main.go` 是程序的主要执行逻辑,而 `main_test.go` 是针对这个逻辑的测试代码。在 Golang 项目中,这是一种常见的代码组织方式,它有助于保持代码整洁,并确保代码的可测试性和可维护性。