Golang 可以把包名去掉吗?

2020-08-07 16:34:56

Golang 可以把包名去掉吗?

Golang不可以把包名去掉,包名是一种类似命名空间的管理和组织代码的方式,而Golang的包有两种类型,一种是“main”包,该包的可以有唯一的一个“main”函数,这个函数也是程序的入口,另外一种就是非“main”包。

简单的例子

➜  golang echo $GOPATH/Users/master/golang➜  golang pwd/Users/master/golang➜  golang tree.├── bin├── pkg└── src    └── demo        └── main.go4 directories, 1 file➜  demo cat main.gopackage mainimport (    "fmt")func main() {    fmt.Println("hello world")}➜  demo go run main.gohello world


从上面的目录结构可以看出,GOPATH为 /Users/master/golang 。在 src 内创建了一个项目 demo。demo 里有一个 main.go 文件。main.go 的第一行声明了这是一个 main 包,因此可以定义一个 main 函数。使用 go run 可以编译并运行 main.go。

自定义包(package )

go 使用 package 来管理源文件。package 必须在一个文件夹内,且一个文件夹内也只能有一个package,但是一个文件夹可以有多个文件。下面自定义一个 package。

➜  demo tree.├── main.go└── service    └── http.go1 directory, 2 files➜  demo cat service/http.gopackage apiimport "fmt"func HandleReq(){    fmt.Println("api - http.go Handle Request")}➜  demo cat main.gopackage mainimport (    "fmt"    "./service")func main() {    fmt.Println("hello world")    api.HandleReq()}