Je pense que cela fonctionnera.
---
Une erreur qui s'est produite lorsque je développais avec Go et que j'ai essayé de séparer les packages à l'aide de fichiers.
Je l'ai résolu pour le moment, j'ai donc pris une note immédiatement. .. ..
## environnement
version go version go1.13.14 linux/amd64 centos 7
Structure du répertoire ./ | |--sample/ | | | |--sample.go | |--main.go
## Code réel
#### **`main.go`**
```go
package main
import "./sample"
func main() {
a := sample.Foo("test")
sample.PrintFoo(a)
}
sample.go
package sample
import "fmt"
func Foo(s string) string {
return "aaa " + s + " bbb"
}
func PrintFoo(s string) {
fmt.Println(s)
}
[root@marny ---]# go build -o practice
unexpected directory layout:
import path: _/develop/go/src/test/marny/sample
root: /develop/go/src
dir: /develop/go/src/test/marny/sample
expand root: /develop/go
expand dir: /develop/go/src/test/marny/sample
separator: /
L'erreur «disposition du répertoire inattendue:» semble être une erreur indiquant que le chemin du paquet importé n'est pas spécifié.
J'ai moi-même édité centos7 (vbox) en le connectant à windows avec samba, donc il n'y avait pas d'erreur dans le code source ...
Dans mon cas, ** $ GOPATH ** est spécifié comme / develop / go
. Selon les spécifications GOPATH, je génère des bins et des srcs et développe Go, mais une erreur se produit ici.
La solution est de changer import. / Sample
dans main.go par le chemin relatif vu de $ GOPATH / src
.
Donc,
main.go
package main
import "test/marny/sample"
func main() {
a := sample.Foo("test")
sample.PrintFoo(a)
}
Je pense que cela résoudra le problème.
GOPATH est ennuyeux.