Golang 可以把包名去掉吗?

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

简单的例子

➜  golang echo $GOPATH
/Users/master/golang
➜  golang pwd
/Users/master/golang
➜  golang tree
.
├── bin
├── pkg
└── src
    └── demo
        └── main.go

4 directories, 1 file

➜  demo cat main.go
package main

import (
    "fmt"
)

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

➜  demo go run main.go
hello 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.go
1 directory, 2 files
➜  demo cat service/http.go
package api
import "fmt"
func HandleReq(){
    fmt.Println("api - http.go Handle Request")
}
➜  demo cat main.go
package main
import (
    "fmt"
    "./service"
)
func main() {
    fmt.Println("hello world")
    api.HandleReq()
}


Golang 可以把包名去掉吗?