1. 代码结构

demo 文件夹下有两个文件,分别为 hello.gomain.go ,结构如下:

wohu@wohu:~/GoCode/src$ tree demo/
demo/
├── hello.go
└── main.go0 directories, 2 files
wohu@wohu:~/GoCode/src$

hello.go 文件内容为:

package mainimport "fmt"func hello() {fmt.Println("hello, world")
}

main.go 文件内容为:

package mainfunc main() {hello()
}

2. 运行代码

wohu@wohu:~/GoCode/src/demo$ go run main.go
# command-line-arguments
./main.go:4:2: undefined: hello

按道理讲同一个包内的函数是可以互相调用访问的,但是此处报错,提示 undefined: hello

3. 问题原因

Gomain 包默认不会加载其他文件, 而其他包都是默认加载的。如果 main 包有多个文件,则在执行的时候需要将其它文件都带上,即执行 go run *.go

如下所示:

wohu@wohu:~/GoCode/src/demo$ go run *.go
hello, world
wohu@wohu:~/GoCode/src/demo$

4. VSCode 中配置

VSCode.vscode 目录下创建 settings.json 文件, 并添加如下内容:

{"code-runner.executorMap": {"go": "cd $dir && go run .",},"code-runner.executorMapByGlob": {"$dir\\*.go": "go"}
}

然后在 VSCode GUI 界面提供的 Run Code 按钮,会有如下输出:

[Running] cd "/home/wohu/GoCode/src/demo/" && go run .
hello, world[Done] exited with code=0 in 0.177 seconds

如果没有在 settings.json 文件中增加以上内容的话,在 VSCode GUI 界面提供的 Run Code 按钮,会有如下错误:

[Running] go run "/home/wohu/GoCode/src/demo/main.go"
# command-line-arguments
src/demo/main.go:4:12: undefined: hello[Done] exited with code=2 in 0.158 seconds

注意两者运行命令之间的区别:

go run "/home/wohu/GoCode/src/demo/main.go

cd "/home/wohu/GoCode/src/demo/" && go run .

golang 同一个包中函数互相调用报错 undefined 以及在 VSCode 中配置右键执行整个包文件相关推荐

  1. PHP获取input中的值相同报错,laravel单元测试之phpUnit中old()函数报错解决_php实例...

    前言 最近在做laravel单元测试.遇到了一个问题: 当添加的view里面使用old()函数时就会报错,正常url访问没问题,但是在phpUnit中就报错 错误原因: exception 'Runt ...

  2. python中gbk字符原因报错_深入理解Python中的字符和编码,结合,了解,与

    一.前言 在学习python初期,常常会对运行文件出现的各种"codec"报错摸不着头脑有没有? 对各种编码方式的区别和适用的情况混淆有没有? 对python2,python3 编 ...

  3. 中props使用this报错_为什么在静态方法中不能使用this

    看到这个标题的读者,在你们的心里多多少少都有自己的答案,下面说一下我的答案. 在JVM的运行时数据区中有个虚拟机栈(或Java栈),在它的里面是由栈帧'叠加'而成. 栈帧由局部变量表,操作数栈,动态连 ...

  4. golang 相互引用_golang go run undefined 同一个package中函数互相调用的问题

    golang中同一个package中函数互相调用的问题 同一个packge中(test) a.go package main func main(){ Test() } b.go package ma ...

  5. C/C++/动态链接库DLL中函数的调用约定与名称修饰

    参见:http://blog.twofei.com/cc/impl/calling-convension.html 调用约定(Calling Convention)是指在程序设计语言中为了实现函数调用 ...

  6. 站长在线Python精讲:在Python中函数的调用详解

    欢迎你来到站长在线的站长学堂学习Python知识,本文学习的是<在Python中函数的调用详解>.本文的主要内容有:调用函数的基本语法和调用自定义函数的实例讲解. 目录 1.调用函数的基本 ...

  7. C语言中函数的调用和函数返回值(17)

    C语言中函数的调用和函数返回值 一.函数的调用形式 按照函数调用出现的形式,可以分为三种调用方式: 1.函数调用语句 例如: printf_star(); 2.函数表达式 c=2*max(a,b); ...

  8. VS中使用 loadimage()函数载入图像报错与图像无法载入的解决办法

    VS中使用 loadimage()函数载入图像报错与图像无法载入的解决办法 1. 载入图像报错 使用loadimage()加载图片时,程序报错界面如下图 报错内容如下: 解决方案1: 在图片名称前加个 ...

  9. IDEA中启动项目一直报错,找不到符号或 程序包不存在常见处理方式

    新安装的idea,配置与maven都安装好了,运行其他项目都正常,但运行某个项目时报错,提示:"Error:(4, 25) java: 找不到符号符号:类 xxx位置:程序包 xxx.xxx ...

最新文章

  1. Android中文API(127) —— MessageQueue
  2. ARIMA模型详细讲解
  3. stateful function用法记录(还没弄完)
  4. 【渝粤教育】广东开放大学 标准化理论与方法 形成性考核 (50)
  5. 数据可视化【一】JavaScript学习
  6. 算法竞赛入门经典 第七章 总结
  7. kubernetes(五)二进制安装-安装docker服务
  8. 培训协议与服务器有没有要求,上面说的是提供专业培训且规定了服务器和培训费以及违约金的问题。试用期辞职单位有没有权利追究违约金呢?- 法律快车法律咨询...
  9. linux执行命令带时间戳,Linux查看History记录加时间戳的小技巧
  10. caffe镜像︱window10+docker+ubuntu14.04+caffe镜像的简单尝试
  11. linux如何卸载干净mysql
  12. cv2.cvtColor() 的使用
  13. 利用PMOS实现LED恒流驱动芯片的通断控制
  14. 薛定谔方程编译成python码并画出电子轨道
  15. lenovo服务器换系统重装系统_联想电脑怎么重装系统|联想电脑重装系统步骤
  16. 3.1 人工智能定义
  17. 大型剪纸艺术——美到惊奇
  18. nodeJS实现简易爬虫
  19. C语言基础教学——认识C语言(第一课)
  20. mysql 出现2003- cant connect to MYSQL server on localhost 的解决办法

热门文章

  1. Strutsw2与Spring整合流程-简述
  2. 2022-2028年中国木门行业投资分析及前景预测报告(全卷)
  3. Python 生成器总结
  4. centos 非root用户(普通用户)替换yum安装软件方法
  5. 奇异值分解 SVD 的数学解释
  6. VTA:深度学习加速器堆栈
  7. TensorRT Analysis Report分析报告
  8. 人工智能微控制器体系结构
  9. 中国人工智能AI框架自主研发
  10. 如何运行具有奇点的NGC深度学习容器