分类:go| 发布时间:2024-10-16 09:58:00
项目中有一个 go 写的工具代码如下:
//go:build ignore
// +build ignore
package main
func main() {
println("hello demo")
}
一直使用如下命令编译:
go build main.go
后面随着这个工具扩展,将 main.go 扩展成模块了,例如:
main.go
//go:build ignore
// +build ignore
package main
func main() {
DoPreTask()
println("hello demo")
}
pretask.go
package main
func DoPreTask() {
println("do pretask")
}
go.mod
module example.com/ignoredemo
go 1.20
编译报错:
$ go build
# example.com/ignoredemo
runtime.main_main·f: function main is undeclared in the main package
明明模块中有 main 函数为什么还是报 main 函数未定义呢?
将 pretask.go 的代码放回 main.go 中,代码变为
//go:build ignore
// +build ignore
package main
func main() {
DoPreTask()
println("hello demo")
}
func DoPreTask() {
println("do pretask")
}
go.mod
module example.com/ignoredemo
go 1.20
$ go build
package example.com/ignoredemo: build constraints exclude all Go files in xxx
报错所有 go 文件都被排除了,查看 main.go 发现有如下代码:
//go:build ignore
// +build ignore
去掉这两行后,再次编译,一切正常,问题解决,最终代码为:
main.go
package main
func main() {
DoPreTask()
println("hello demo")
}
pretask.go
package main
func DoPreTask() {
println("do pretask")
}
go.mod
module example.com/ignoredemo
go 1.20