Go 的包名可以与其目录不一样。(但同个目录内的不同 go 文件的包名需要是一致的。)比如有一个 banana/a.go 文件:
banana/a.go
package apple func WhoAmI() string { return "apple" }
使用时:
import "banana" func main() { apple.WhoAmI() // "apple" }
但一般还是不要让目录名与包名不一样。真有点奇葩。Go 标准库遵循这个规则。