Heim  >  Artikel  >  Backend-Entwicklung  >  Warum kann ich einen bestimmten Typ nicht in Go importieren?

Warum kann ich einen bestimmten Typ nicht in Go importieren?

Susan Sarandon
Susan SarandonOriginal
2024-11-14 22:24:02238Durchsuche

Why Can't I Import a Specific Type in Go?

Paket und Typ importieren

Problem:

Ein Benutzer stößt auf Probleme, wenn er einen Typ aus einem separaten Paket in sein importiert Gehen Sie zur Projektstruktur. Die Importanweisungen führen zu Warnungen über nicht verwendete Importe oder undefinierte Typen, obwohl der Typ in Funktionsdeklarationen verwendet wird.

Projektstruktur:

src
|-- config
   |-- config.go
|-- otherPackage
   |-- otherFile.go
|-- main.go

Importversuch:

import (
    "fmt"
    "math"
    "../config"
)

Fehler:

  • importiert und nicht verwendet
  • undefiniert: Konfiguration

Ursache:

Das Problem entsteht durch eine falsche Importsyntax. In Go ist es nicht möglich, bestimmte Typen oder Funktionen aus einem Paket zu importieren. Es kann nur das gesamte Paket importiert werden.

Lösung:

Um das Problem zu beheben, muss die Importanweisung wie folgt geändert werden:

import (
    "fmt"
    "math"
    "full/import/path/of/config"
)

Paket- und Typreferenz:

Da das gesamte Paket importiert wird, muss auf den Typ mit seinem vollständig qualifizierten Namen verwiesen werden:

func function(... config.Config) {}

Variable Shadowing:

Wenn eine Variable mit demselben Namen wie das importierte Paket im aktuellen Bereich deklariert wird, wird das Paket gespiegelt. Um dies zu vermeiden, benennen Sie die Variable in einen anderen Namen um, beispielsweise:

func function(... config.Config) {}
var cfg config.Config

Das obige ist der detaillierte Inhalt vonWarum kann ich einen bestimmten Typ nicht in Go importieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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