[golang]Go常见问题:# command-line-arguments: ***: undefined: ***_landv的博客-程序员秘密

技术标签: 历史笔记  

今天遇见一个很蛋疼的问题,不知道是不是我配置的问题,IDE直接run就报错。

问题描述

在开发代码过程中,经常会因为逻辑处理而对代码进行分类,放进不同的文件里面;像这样,同一个包下的两个文件,点击idea的运行按钮或者运行 go run main.go命令时,就会报错,如图所示。

 

 那就好吧,我直接命令运行咯,go run main.go,一样的结果。

 

IDE的配置,Run _kind:以file模式启动就报错,以package包模式就不会报错。

 

酱紫就不会报错了

 

 

原因分析

 当然通过命令模式也会发现这样蛋疼的问题,go build不报错,直接go run main.go就报错。

这事你得揪其因呀,出现蛋疼问题就得抚平咯,哈哈哈。

在源代码的main函数中,我们发现从base.Commands的切片中获取要执行的命令,然后和传入的args一起执行cmd.Run(cmd, args)这个方法;

 

 

 

 然后再回过头看cmd.Run(cmd, args)这个函数,结果发现它只是定义了一种类型,具体实现这里没有指出;

 

 

紧接着回头去看run包下的函数,会发现run.go在初始化的时候,会把改文件下的runRun()函数赋值给base.Command{}定义的对象CmdRun,结果会发现runRun函数的的参数类型和个数完全符合cmd.Run(cmd, args)这个函数类型,在go语言中,函数的参数类型和参数个数符合定义的函数类型,则说明改函数实现了定义函数(注:go语言中,函数与方法不同)。 

 

在runRun()函数中,会发现files和cmdArgs接收的是传过来的文件列表,然后会通过GoFilesPackage(files),然后会入栈、加载、出栈等操作,由于启动的时候传递的只是一个.go文件,并没有传递demo.go,所以系统在加载main.go文件中并没有找到compose.go 文件中定义的变量,则在

widget.NewToolbarAction(theme.MailComposeIcon(), func() {
     
newCompose(m.app, m.server).loadUI().Show()
}),

这一行,开始出错。 

 

正确操作:

该出错原因属于go的多文件加载问题,采用go run命令执行的时候,需要把待加载的.go文件都包含到参数里面。通过go run *.go(目录里面没有test.go才行)

或者配置IDE以package包模式就不会报错。

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_30895047/article/details/103829252

智能推荐

c语言asp截取字符串函数,字符串处理函数_weixin_39963080的博客-程序员秘密

在C中,并没有字符串这个数据类型,而是使用字符数组来保存字符串。C字符串实际上就是一个以null('\0')字符结尾的字符数组,null字符表示字符串的结束。需要注意的是:只有以null字符结尾的字符数组才是C字符串,否则只是一般的C字符数组。C字符串定义时可以利用"="号进行初始化,但是以后不能利用"="对C字符串进行赋值。对C字符串的操作需要通过"string"文件中定义的字符串处理函数。例如...

error C2065: 'CoSetProxyBlanket' : undeclared identifier 问题解决方法_wang_tai的博客-程序员秘密

CodeGuru Forums > Visual C++ & C++ Programming > Visual C++ Programming > Question about WMI PDA Click

IDEA插件系列(86):File Path Autocomplete插件——文件路径自动完成_filepath插件_二木成林的博客-程序员秘密

1.插件介绍File Path Autocomplete插件。自动完成文件路径。效果如下:2.安装方式第一种方式,是在IDEA上搜索插件进行安装,会适配当前IDEA的版本。第二种安装方式是使用离线插件进行安装。插件下载地址:https://plugins.jetbrains.com/plugin/11088-file-path-autocomplete3.使用方法安装插件后,只需要输入字符串,就可以模糊匹配文件夹名称或文件名称路径。完整的路径,即src目.

python谐音梗_程序员的1024:代码+程序,引起你的好奇_weixin_39820588的博客-程序员秘密

1024是什么?游戏?2的十次方?某论坛节日?一级棒(1G与1级谐音,也有一级棒的意思)?你可能知道1GB=1024M,1M=1024K,1KB=1024B但你不知道一年365天有41天是节日,只有这个是真正属于程序员的so,在这个特殊的日子里让我们一起大声喊出:有这么一群人他们工作起来没日没夜加最忙的班,熬最深的夜从茂密黑发,到深度地中海从炯炯有神,到黑眼圈+大眼袋从百变衣帽间,到同款格子衫从翩...

OAuth初探_weixin_33812433的博客-程序员秘密

2019独角兽企业重金招聘Python工程师标准>>> ...

win10电脑桌面透明便签_win10系统在桌面添加透明便签的操作方法_weixin_39928480的博客-程序员秘密

win10系统在桌面添加透明便签的操作方法?很多win10用户在使用电脑的时候,会发现win10系统在桌面添加透明便的的现象,根据小编的调查并不是所有的朋友都知道win10系统在桌面添加透明便的的问题怎么解决,不会的朋友也不用担心,下面我就给大家讲解一下win10系统在桌面添加透明便的的少许解决办法,其实步骤很简单,只需要1、安装好notezilla 后,请在你的电脑任务栏找到它,确保它正在运行;...

随便推点

hive-1.2.1与hadoop-2.7.3安装出现的二个问题解决_ChrisYANG23521的博客-程序员秘密

第一个问题:安装mysql后,进行了权限语句的执行:mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;然后进行:mysql> FLUSH PRIVILEGES;但是启动hive时出现:Unable to instantiate org.apache.hadoop...

JSON.parse() 使用注意事项·_json.parse 字符串报错_蚁族的奋斗1的博客-程序员秘密

参考文章:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse第一个参数一定是 一个有效的字符串对象有效指的是1. 外面一定是'' 单引号2. 如果有键的话 一定是"" 双引号https://developer.mozilla.org/zh-CN/do...

SpringMVC 4.3 ---第一个HelloWorld项目_蜘蛛侠不会飞的博客-程序员秘密

操作步骤:from:https://www.cnblogs.com/yy3b2007com/p/8182677.html2)使用eclipse创建Dynamic web project,并把spring mvc开发必须包引入,引入commons-logging日志包;3)修改web.xml配置文件,配置dispatcherServlet;在src下创建一个springmvc.xml配置文件,配置文...

VS上写QT,还原熟悉的IDE_vs qt_whitehehe的博客-程序员秘密

给VS配置QT1.我们为啥要在vs上写qt程序呢?1.VS比QT调试功能强大。2.VS作为宇宙最强ide做为程序员习惯用。3.VS多方面比qtcreator强大。2.怎么配置VS呢?1.选择菜单栏->扩展->管理扩展2.给VS安装QT的插件选择菜单栏的 扩展->管理扩展,输入Qt搜索,然后下载Qt Visual Studio Tools(下载灰常的银杏,慢的死~还不一定能下载)如果实在不能忍受这龟速,咱们来别的办法**...