go 学习中遇到的问题及解决

1、go test进行单元测试时,出现undefined方法或者command-line-arguments [build failed]解决方案

问题

运行go test命令:

go test -v ringbuffer_test.go

出现错误:
请添加图片描述

解决

运行命令

go test -v ringbuffer_test.go ringbuffer.go

参考

参考

2、go操作Mysql

2.1、将表名作为变量查询

begin, err := db.Begin()
tableName := "hi"
err = begin.QueryRow("select id from ? where id = 3", tableName).Scan(&result)

这种方法出现错误,因为go不允许将表明或列名作为变量用于Mysql。改为字符串拼接可行,

err = begin.QueryRow("select id from" + tableName + "where id = 3").Scan(&result)

参考

2.2、出现busy buffer

不知道具体原因
本来是

err = begin.QueryRow("SELECT id FROM "+tableName+" WHERE HOST_NAME = ? AND PORT = ?", ip, mysqlPort).Err()

因为不需要查询的结果,只是想确定Mysql中有没有这条记录,所以这条语句最后面随便使用了.Err(),好像就是这个引起的错误
后来改为

err = begin.QueryRow("SELECT id FROM "+tableName+" WHERE HOST_NAME = ? AND PORT = ?", ip, mysqlPort).Scan(&id)

就好了

2.3、net.ip类型转为string

强制类型转换失败

ipstring := string(ip)//失败

后来改为

ipString := fmt.Sprintf("%s", ip)//成功
//其实这个也行
ipString := ip.String()//成功

3、error常用的处理方式

3.1、

func name() error{
	return errors.New("comment")
}

3.2、

func name() error{
	err := 
	return fmt.Errorf("comment %s", err)
}

4、go install

出现go install 。。。。 permission denied的情况。
已解决:

sudo chmod -R 777 go(该文件夹是GOPATH所对应的那个文件夹,该文件夹下面有bin/pkg/src三个子文件夹)

5、goimports

goimports安装
1、直接使用下面的命令将goimports安装到了GOPAHT/src下面,但该文件应该在GOPATH/bin下面。

go install golang.org/x/tools/cmd/goimports@latest

2、先执行1
再将目录切换到go/src/golang.org/x/tools/cmd/goimports下,执行

go install golang.org/x/tools/cmd/goimports
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值