package与import的关系
### import后面的路径该怎么写?
Answer:import后面的路径是相对的路径,它是相对于GOPATH/src后的路径名称。
一般意义上在代码设计时,我们习惯将一个目录下的文件认为是一个包,例如:
```
public/
├── command.go
├── config.go
├── const.go
├── job.go
├── network.go
├── process.go
├── resource.go
└── upgrade.go
```
则可以把public目录下的源代码编译成1个包。
假设public的绝对路径是:`/root/go/src/operation_center/public`,$GOPATH为`/root/go`,则如果需要引用public下面的包,则import需要写作:
`import "operation_center/public"`
### package命名与目录的关系
package声明包名与其所在的目录,并不要求一致。例如,在上面的public目录下,其下面的go文件的源代码中,例如process.go文件,声明所在的package为:
`package common`
且其对外提供了一个接口:
```
package common
import "time"
func Today() time.Time {
now := time.Now()
return time.Date(now.Year(), now.Month(), now.Day(), 0, 0, 0, 0, time.Local)
}
```
使用时如下:
```
package main
import (
"fmt"
"operation_center/public"
)
func main(){
fmt.Println(common.Today())
}
```
### 是否会生成静态文件或者可执行文件
go build:在源码目录下执行时,只会生成可执行文件,不会生成库文件。
go get/ go install:会生成库文件或者可执行文件。
因为go get的本质上也是执行了go install,因此可以认为:
`执行了install操作,可以生成可执行文件或者静态库文件`
有疑问加站长微信联系(非本文作者)