背景:因Linux下无界面,程序开发和简单的调试在Windows上进行,程序运行在Linux上进行。
一、环境搭建
- 1.enable go modules integration
激活这个选项以启用代码中依赖的第三方包
go modules的解释如下
默认模式(未设置该环境变量或 GO111MODULE=auto):Go 命令行工具在同时满足以下两个条件时使用 Go Modules:
当前目录不在 GOPATH/src/ 下;
在当前目录或上层目录中存在 go.mod 文件。
GOPATH 模式(GO111MODULE=off):Go 命令行工具从不使用 Go Modules。相反,它查找 vendor 目录和 GOPATH 以查找依赖项。
Go Modules 模式(GO111MODULE=on):Go 命令行工具只使用 Go Modules,从不咨询 GOPATH。GOPATH 不再作为导入目录,但它仍然存储下载的依赖项(GOPATH/pkg/mod/)和已安装的命令(GOPATH/bin/),只移除了 GOPATH/src/。
引用—https://www.sulinehk.com/post/go-modules-details/
这个enable的功能相当于执行了go env -w GO111MODULE=on,如果在gopath下的工程里面激活这个,那么会出现main包找不到的问题
- 2.go proxy
Windows下,在软件中配置环境变量,配置的地方有多个,我配置了很多,具体不知道哪个生效了,环境变量为 GOPROXY = “https://goproxy.cn”
Linux下,因为是命令行模式,所以直接 go env -w GOPROXY=“https://goproxy.io,direct” 就行,如果go命令在sudo下运行,那么sudo go env -w GOPROXY=“https://goproxy.io,direct” 就行。
引用–https://goproxy.cn/
二、开发
1.os.O_WRONLY
在Windows下这个属性不用加也能写文件,但是在Linux下一定要加这个属性才能写
2.<-chan int
并不是在定义时读取,而是定义了一个只读管道
<-chan int 像这样的只能接收值,即只能从管道中读取数据,b := <-a
chan<- int 像这样的只能发送值,只能写管道,a<-12
3.封装命令行执行功能时出现获取不到命令行输出的问题
伪代码如下
func (t