go开发过程中踩的坑

本文主要介绍了在Go开发过程中遇到的环境搭建、开发、调试及运行阶段的问题。包括Go Modules的启用、代理设置,os.O_WRONLY在不同平台的区别,只读管道的使用,命令行执行的正确处理方式,以及修改第三方库代码后编译未生效的排查方法。
摘要由CSDN通过智能技术生成

背景:因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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值