Golang在package main包下的中函数互相调用

Golang Main包下多个文件的相互调用,引发 .\main.go:82:2: undefined: tsPra01异常,处理如下。

目录树

1
2
3
4
5
6
7
[root@i-2ld7xfi6 main]# pwd
/opt/project/go_project/src/main

[root@i-2ld7xfi6 main]# tree
.
├── main.go
└── test.go

main.go

1
2
3
4
5
package main

func main() {
SayHello()
}

test.go

1
2
3
4
5
6
7
package main

import "fmt"

func SayHello() {
fmt.Println("hello world")
}

可以看到,main.go和test.go都是在package main里面,main.go的main方法调用了main包的SayHello()方法。
运行main.go的main方法时,报错 Undefined: SayHello

1
2
3
[root@i-2ld7xfi6 main]# go run main.go
# command-line-arguments
./main.go:4:5: undefined: SayHello

报错原因

在运行main.go时,test.go包未一起编译

解决方法

在Linux中:

1
2
3
4
5
6
7
# 方法一
[root@i-2ld7xfi6 main]# go run *.go
hello world

# 方法二
[root@i-2ld7xfi6 main]# go run main.go test.go
hello world

在window中:

1
2
D:\...\main>go run main.go test.go
hello world
-------------本文结束感谢您的阅读-------------