Heim > Backend-Entwicklung > Golang > Warum führt das Importieren einer Datei aus einem Unterordner zu einem „undefinierten' Fehler in Go, und wie können Go-Module verwendet werden, um ihn zu beheben und gleichzeitig eine modulare Projektstruktur beizubehalten?

Warum führt das Importieren einer Datei aus einem Unterordner zu einem „undefinierten' Fehler in Go, und wie können Go-Module verwendet werden, um ihn zu beheben und gleichzeitig eine modulare Projektstruktur beizubehalten?

Linda Hamilton
Freigeben: 2024-11-15 11:56:02
Original
356 Leute haben es durchsucht

Why does importing a file from a subfolder result in an

Verwendung von Go-Modulen zur Strukturierung von Projekten mit Unterordnern

Navigation
Wir möchten unser Projekt mit der folgenden Struktur gestalten:

├── main.go
└── models
    └── user.go
Nach dem Login kopieren

In diesem Layout importiert main.go die Datei user.go, die den Benutzertyp definiert. Der Compiler warnt jedoch, dass der Benutzer im Hauptpaket nicht definiert ist.

Frage
Warum tritt dieser Fehler auf und wie können wir ihn beheben und gleichzeitig eine modulare Projektstruktur beibehalten?

Antwort
Das Problem ist auf das Fehlen einer Moduldefinition im Projekt zurückzuführen. Vor Go 1.11.1 verließ sich Go auf die Umgebungsvariable $GOPATH, was zu Komplexitäten bei der Verwaltung von Projektabhängigkeiten führte.

Go-Module, die in Go 1.11.1 eingeführt und in Go 1.11.3 standardmäßig aktiviert wurden, adressieren dieses Problem. Durch die Aktivierung von Modulen (über die Umgebungsvariable GO111MODULE=on) können wir modulare Projekte mit versionierten Abhängigkeiten und hierarchischer Organisation erstellen.

Lösung
Um Go-Module zu nutzen, befolgen Sie diese Schritte:

  1. Erstellen Sie einen go.mod Datei:

    • Modul hinzufügen um den Modulnamen zu definieren, der in diesem Fall main ist.
  2. Strukturieren Sie Ihr Projekt wie folgt:
/Users/myuser/Projects/my-project/
├── go.mod
├── main.go
└── src/
    └── models/
        └── user.go
Nach dem Login kopieren
  1. user.go importieren main.go:

    • In main.go verwenden Sie import „main/src/models/user“, um die user.go-Datei zu importieren.
  2. Probe main.go:

    package main
    
    import (
     "fmt"
     "main/src/models/user"
    )
    
    func main() {
     fmt.Println(user.User{"new_user"})
    }
    Nach dem Login kopieren
  3. Beispiel user.go:

    package user
    
    type User struct {
     Login string
    }
    Nach dem Login kopieren

Diese Struktur ermöglicht es uns, den Benutzertyp aus der Datei models/user.go in die Datei main.go zu importieren. Die Datei go.mod definiert den Modulnamen und dient als Stammverzeichnis des Projekts.

Das obige ist der detaillierte Inhalt vonWarum führt das Importieren einer Datei aus einem Unterordner zu einem „undefinierten' Fehler in Go, und wie können Go-Module verwendet werden, um ihn zu beheben und gleichzeitig eine modulare Projektstruktur beizubehalten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage