我尝试使用Go Project Layout
中描述的布局构建Go项目我在Ubuntu上使用go 1.9.2。我的项目布局如下
$GOPATH/src/github.com/ayubmalik/cleanprops
/cmd
/cleanprops
/main.go
/internal
/pkg
/readprops.go
文件cmd / cleanprops / main.go指的是cleanprops包,即
package main
import (
"fmt"
"github.com/ayubmalik/cleanprops"
)
func main() {
body := cleanprops.ReadProps("/tmp/hello.props")
fmt.Println("%s", body)
}
内部/ pkg / readprops.go的内容是:
package cleanprops
import (
"fmt"
"io/ioutil"
)
func check(e error) {
if e != nil {
panic(e)
}
}
func ReadProps(file string) string {
body, err := ioutil.ReadFile(file)
check(err)
fmt.Println(string(body))
return body
}
但是当我从目录$ GOPATH / src / github.com / ayubmalik / cleanprops内部构建cmd / cleanprops / main.go时,使用命令:
go build cmd/cleanprops/main.go
我收到以下错误:
cmd/cleanprops/main.go:5:2: no Go files in /home/xyz/go/src/github.com/ayubmalik/cleanprops
我错过了什么?
答案 0 :(得分:3)
该文件提出了这种结构:
$GOPATH/src/github.com/ayubmalik/cleanprops
/cmd
/cleanprops
/main.go
/internal
/pkg
/cleanprops
/readprops.go
像这样导入包。导入路径与$ GOPATH / src下的目录结构匹配。
package main
import (
"fmt"
"github.com/ayubmalik/cleanprops/internal/pkg/cleanprops"
)
func main() {
body := cleanprops.ReadProps("/tmp/hello.props")
fmt.Println("%s", body)
}