beego项目新增一个api的校验功能结果运行导致panic

/var/folders/3p/jc3w8_dn5dd0r5_5ccp3nrqm0000gn/T/go-build935260114/b001/exe/main flag redefined: graceful
panic: /var/folders/3p/jc3w8_dn5dd0r5_5ccp3nrqm0000gn/T/go-build935260114/b001/exe/main flag redefined: gracefulgoroutine 1 [running]:
flag.(*FlagSet).Var(0xc0000862a0, 0x18aaa20, 0x1d40069, 0x17b06d5, 0x8, 0x17c3eac, 0x21)/usr/local/Cellar/go/1.13.8/libexec/src/flag/flag.go:848 +0x4ae
flag.BoolVar(...)/usr/local/Cellar/go/1.13.8/libexec/src/flag/flag.go:627
github.com/astaxie/beego/grace.init.0()/Users/dxm/Documents/code/gopath/src/github.com/astaxie/beego/grace/grace.go:93 +0x7a
exit status 2

/usr/local/Cellar/go/1.13.8/libexec/src/flag/flag.go:848 +0x4ae

定位到panic的代码

panic的原因是 graceful这个flag被定义了两遍,全局搜索定义此变量的代码位置,果然找到了两处,

来自不同目录下的两个相同的外部包,均在项目中被引用,所以导致了panic

相同的外部包一个从vendor中导入一个从$GOPATH 导入的具体原因是:

公共类的包A同时存在在$GOPATH下的B包下和Vendor下的C包下,B和C均在项目中被引用,

由于以下原因导致了panic:

  • 包导入时首先从vendor中导入然后再看$GOPATH
  • C中所依赖的所有外部包的导入路径均会继承C的路径,B同理
  • C在vendor中不存在

解决方法

将C拷贝到vendor下

main flag redefined: graceful相关推荐

  1. : error c2062: 意外的类型“int”_Go 命令行解析 flag 包之扩展新类型

    上篇文章 说到,除布尔类型 Flag,flag 支持的还有整型(int.int64.uint.uint64).浮点型(float64).字符串(string)和时长(duration). flag 内 ...

  2. GO标准库—命令行参数解析FLAG

    评论有人提到没有例子,不知道讲的是什么.因此,为了大家能够更好地理解,特意加了一个示例.其实本文更多讲解的是 flag 的实现原理,加上示例之后,就更好地知道怎么使用了.建议阅读 <Go语言标准 ...

  3. golang flag包(命令行参数解析)

    1.1 使用示例: 我们以 nginx 为例,执行 nginx -h,输出如下: nginx version: nginx/1.10.0 Usage: nginx [-?hvVtTq] [-s sig ...

  4. 一期每日一GO群分享-flag、viper、协程池、异常处理

    1.11 flag库 今天介绍一个库flag,命令行程序常用,用来接受参数的. var (intflag intboolflag boolstringflag string )func init() ...

  5. Go Flag使用教程

    Flag库 flag库是Go语言标准库之一,提供了命令行参数解析的能力. 官方库文档翻译 参数类型 Go Flag 接受的参数类型 bool int int64 uint uint64 string ...

  6. 从源码的角度看Go语言flag库如何解析命令行参数!

    我上周五喝酒喝到晚上3点多,确实有点罩不住啊,整个周末都在休息和睡觉,文章鸽了几天,想不到就有两个人跑了. 不得不感叹一下,自媒体的太残酷了,时效就那么几天,断更就没人爱.你们说好了爱我的,爱呢?哼 ...

  7. exec go 重启_如何用 Go 实现热重启

    热重启 热重启(Zero Downtime),指新老进程无缝切换,在替换过程中可保持对 client 的服务. 原理 父进程监听重启信号 在收到重启信号后,父进程调用 fork ,同时传递 socke ...

  8. go walk 开发window界面,上传文件到阿里云oss -- 服务器端

    前面我们完成了一个网页端的上传oss程序:https://blog.csdn.net/daily886/article/details/103366145 现在我们把前后端分离 前端使用walk开发, ...

  9. go 使用 gin 上传文件到 阿里云oss存储

    本文使用 go 版本是: go version go1.13 linux/amd64 阿里云oss go sdk版本:v2.0.4  官网可以下载 linux版本是:Linux version 3.1 ...

  10. #### 服务发现 ####

    转自 服务发现原理分析与源码解读 - 掘金 仅做个人备份,浏览请看原文 在微服务架构中,有许多绕不开的技术话题.比如服务发现.负载均衡.指标监控.链路追踪,以及服务治理相关的超时控制.熔断.降级.限流 ...

最新文章

  1. 运维想吃透监控系统,就这一篇足够了
  2. python中的linearregression_【python+机器学习(2)】python实现Linear Regression
  3. “-bash: !”: event not found、echo sudo permission denied
  4. MySQL 8.0版本无法使用 node、Navicat等三方工具连接的问题
  5. JVM学习之GC常用算法
  6. 高等数学上-赵立军-北京大学出版社-题解-练习2.4
  7. _attribute_((packed))
  8. 一步一步搭建客服系统 (7) 多人共享的电子白板、画板
  9. 并行开发的基本概念及两个重要的定律
  10. Node 连接mysql数据库
  11. Golang实践录:静态资源文件整合:web服务
  12. PAT 1060 Are They Equal (25 分)
  13. transferwise怎么提现_收款工具transfer wise介绍(多币种、可收CJ联盟)
  14. ym——Android从零开始(27)(山寨版微信-下)(新)
  15. Nuvoton M031-时钟树
  16. CPU、内存、主板、显卡等是什么?计算机基本的硬件介绍,计算机组成元件
  17. 185电缆的接法图解_三相电缆线的接法图解
  18. 【在CentOS中使用Crow-基于C++的Web服务】
  19. 什么是格局、境界、眼界、眼光
  20. 渝北统景碑口规划开发_渝北区御临河碑口水库主体工程开工建设

热门文章

  1. 百度EasyDL实体抽取和关系抽取
  2. 2021全国电子设计大赛 D题 基于互联网的摄像测量系统 源码解析
  3. Java实现QQ邮箱验证码发送
  4. linux字体不识别不了怎么办,Docker容器不识别宋体等字体的解决方案
  5. vue+file-saver+xlsx 封装导出Excel表格方法
  6. mbp touchbar设置_千万不要再买 TouchBar 的 MBP,教训深刻!
  7. 又是一年毕业季,你拿什么打动面试官?
  8. 无盘服务器教程,无盘入门教程之解读无盘构造
  9. 【源码】6个超炫酷的HTML5电子书翻页动画
  10. 获取jqGrid中每行的子元素td并修改其属性