I recently achieved this using go modules .
Golang opt-in v1.11.1, , , $GOPATH. , , ~/development, . , go : GO111MODULE=on.
Go v1.11.3 2019 .
( ).
~/Dev/my-app
├── src/
│ ├── one/
│ │ ├── two/
│ │ │ └── two.go
│ │ └── one.go
│ └── zero.go
├── go.mod
└── app.go
my-app, app.go go.mod go , .
, two.go, , Two, app.go my-app/src/one/two.
, :
go.mod
module my-app
two.go
package two
func Two() string {
return "I'm totally not supposed to be using go modules for this"
}
app.go
package main
import "my-app/src/one/two"
func main() {
two.Two()
}
two.TheNewFunc() /, two.TheNewFunc() TheNewFunc() .
GitHub , .