Go 应用中 package main 的规则

package
golang 的所有文件都需要指定其所在的包(package),包有两种类型,一种是 main 包,使用 package main 在代码的最前面声明。另外一种就是 非 main 包,使用 package + 包名 。main 包可以有唯一的一个 main 函数,这个函数也是程序的入口。也只有 main 包可以编译成可执行的文件。

规则
1.import 导入的是相对路径,非 package 名!

  1. 习惯上将 package 名和目录名保持一致,如实例中 package A 尽量在./A 文件夹下

  2. 代码中引用包方法 / 对象 / 变量时,如调用 package A 中的 a 函数,使用 A.a 而非目录名

  3. 同一目录下,所有源文件必须使用相同的包名,一个文件夹下只能有一个 package;如果多个文件夹下有同名 package,其实只是彼此无关的 package,如果需要同时使用不同目录下的同名 package,import 时需要为每个目录指定 package 别名:

  4. 同一 package 下不同文件间可以直接调用

  5. 大写字母开头的变量方法暴露到包外,包内大小写随意

  6. 多个 go 文件在 main 包下是无法相互调用的,需要使用 go run *.go 命令

上述转载自@Luson的文章https://learnku.com/articles/65136

我遇到的问题:

多个 go 文件在 main 包下是无法相互调用的,但是编译器不会报错,
直接运行go run main.go会报错undefined

解决办法:

运行go run . 或者 go run *.go