1、在订阅redis消息队列主题或者其他中间件,需要把某个数组的全部字符串进行订阅或者处理?
解决:var target []string = make([]string, 3)
查看对应中间件的方法中某个参数是不是param ... string,后续在该方法中调用数组
target...作为参数
2、某个json节点里面有多个内容,怎么获取这个节点的动态内容?
解决:在定义结构体的时候,这个json节点可以定义成map[string] interface{}类型
3、定义一个全局可操作对象,例如mysql的DB操作?
解决:在写某个go文件的时候,定义var DB *gorm.DB
之后在某个方法里面去把这个DB实例化,
func InitDB() {
DB = sss.newDB
}
4、在使用go语言的时候,配置出现问题,每次都需要go mod vendor在项目下新建一个vendor文件夹才能运行?
解决:在cmd下配置go的env环境
go env -w “GOFLAGS”=“-mod=mod”
5、怎么把项目打包运行在Linux环境?
解决:在项目的路径下配置
go env -w GOOS=linux
go env -w GOARCH="amd64"
go build
6、当GO语言执行程序的log.Fatal(err)方法?
解决:程序会中断退出,不能使用Fatal方法。
7、将GO语言打包到CentOs7系统运行,通过定时任务判断打包程序进程是否存在来启动失败?
解决:centos7系统定时任务的用户环境配置有问题,常规脚本ps -fe | grep test等命令无法准确查出test程序的进程个数,从而无法判断是否启动test程序,需要使用pidof -c test命令。
8、GO语言打包程序使用nohup命令运行在服务器,无法把程序输出到指定文件?
解决:nohup /path/to/your/compiled/go/program/test > /var/log/myprogram.log 2>&1 &
该命令可以输出test程序到log文件,但是需要GO语言的log包的方法去打印自己想要的输出才可以;fmt包的方法是属于终端输出,无法输出到自己指定的log文件。
9、GO语言开发串口通信程序问题?
解决:github.com/tarm/goserial这个库可以开发对应串口通信程序,和window创建的模拟串口可以收发指令,但是部署在Linux服务器里面和真实的485线通信接口无法建立通信互发接收数据,这个框架之前没有解决;
后面采用的是
github.com/jacobsa/go-serial/serial这个框架,在window的虚拟串口可以使用,部署在Linux服务器也可以和真实的串口社保进行通信采集设备数据