go build失败报方法undefined的解决过程
作者:非晓为骁 时间:2023-06-18 15:07:36
记一次在写cli脚本的时候,碰到的一个问题。
问题
自己是写服务端的,有时候会写一些cli脚本去跑测试。习惯main.go写主流程,其他子文件写方法,这样子代码不会都在main.go里面。但这么写直接GoLand点击main旁边的按钮是可以执行,一旦用go build就报某个引用的方法,undefined。
范例代码
//main.go
package main
import "fmt"
func main() {
fmt.Println("add result : ", Add(1, 2))
fmt.Println("multi result : ", Multi(1, 2))
}
//operation.go
package main
func Add(a, b int) int {
return a + b
}
func Multi(a, b int) int {
return a * b
}
注意这是两个文件,不是都在main.go里面,package都是main。这两个文件,都在同一个目录下面。
操作
直接点击run,结果是有的,也没有报错
go build就报错,原本调用的方法undefined
但是上一步可以执行呀,也有结果
解决
原因是go语言中main包和其他package是不同的,它定义了一个独立可执行程序,而不是一个库。一般的包名是.go文件的目录名,编译器会将同一目录下的不同.go文件视作同一个包。但是main包的目录不是main目录,所以问题就是在包的引用和定义上,如果想在main包中添加函数调用,2个方法:
写在main函数所在的go文件中;
创建另一个package,main函数去调用这个包。【建议】
修改后代码
// main.go
package main
import (
"fmt"
"train/package/operation"
)
func main() {
fmt.Println("add result : ", operation.Add(1, 2))
fmt.Println("multi result : ", operation.Multi(1, 2))
}
operation.go放到一个单独的包
// operation.go
package operation
func Add(a, b int) int {
return a + b
}
func Multi(a, b int) int {
return a * b
}
此时再go build就可以解决了。
来源:https://blog.csdn.net/weixin_40242845/article/details/126934100
标签:go,build报错,undefined
0
投稿
猜你喜欢
Jquery获取和修改img的src值的方法
2024-04-22 13:05:32
文字超长自动省略,以...代替,CSS实现
2009-07-16 10:15:00
在前女友婚礼上用python把婚礼现场的WIFI名称改成了
2023-05-26 15:15:49
浅析mysql.data.dll驱动各版本介绍
2024-01-24 04:26:30
详解Python如何实现对比两个Excel数据差异
2023-06-14 00:37:10
初学python数组的处理代码
2023-10-14 19:30:19
MySQL简单了解“order by”是怎么工作的
2024-01-16 10:52:41
Python+OpenCV实现信用卡数字识别的方法详解
2022-01-15 14:25:41
python 字符串和整数的转换方法
2023-10-11 02:31:42
如何利用数据库内容建立一个下拉式列表?
2010-01-01 15:46:00
JavaScript高级程序设计 阅读笔记(十七) js事件
2024-04-19 09:55:17
Python 键盘事件详解
2022-09-28 20:31:01
关于go-zero单体服务使用泛型简化注册Handler路由的问题
2023-08-30 20:19:08
浅析Vue自定义组件的v-model
2024-04-29 13:10:16
js数组去重的11种方法
2024-04-17 10:30:54
查看已安装tensorflow版本的方法示例
2021-09-21 03:49:11
对python .txt文件读取及数据处理方法总结
2022-08-04 02:36:07
PHP中判断变量为空的几种方法分享
2024-06-05 09:35:25
MySQL实现JDBC详细步骤
2024-01-28 13:39:11
永久解决VSCode终端中文乱码问题
2023-09-18 14:47:57