2014-01-18 4 views
12

Ich habe versucht Go zu lernen, aber ich fühle mich oft frustriert, weil einige grundlegende Funktionen, die andere Sprachen haben, in Go nicht funktionieren. Also im Grunde möchte ich den Strukturtyp verwenden, der in anderer Datei definiert ist. Ich konnte Funktionen außer Strukturtyp verwenden. In main.go,Go - Wie importiert man eine Struktur, die in einem anderen Paket enthalten ist?

package main 

    import (
     "list" 
) 

    func main() { 
     lst := list.NewList(false)   
     lst.Insert(5) 
     lst.Insert(7) 
     lst.InsertAt(2, 1) 
     lst.PrintList() 
    } 

Das funktioniert perfekt (und alle anderen Funktionen), wie ich erwarte, dass (Liste ist in $ GOPATH). In Paketliste I definierte struct wie folgt:

type LinkedList struct { 
    head *node 
    size int 
    isFixed bool 
} 

Ich wollte diese Struktur in anderer Struktur verwenden, so dass ich versuchte, so etwas zu tun,

type SomeType struct { 
    lst *LinkedList 
} 

Aber leider, ich habe Fehler, Der Typ LinkedList ist nicht definiert. Wie kann ich eine Struktur verwenden, die in einem anderen Paket definiert ist?

+1

Does [Dieser Beitrag] (http://stackoverflow.com/a/15051192/2908724) beantworten Ihre Frage? – bishop

+0

Nein. Wie gesagt, alle anderen Funktionen funktionieren, außer dass sie direkt den Strukturtyp verwenden. Und in diesem Beitrag geht es darum, andere Dateien zu importieren. Ich habe keinen Fehler beim Finden des Pakets bekommen. – REALFREE

+0

Solange der Name der Struktur einen ersten Großbuchstaben hat, sollte sie mit dem Namen des Namensraums wie @tobi angezeigt werden. –

Antwort

22

Der LinkedList Typ ist im list Namespace, so dass Ihre Nutzung des zu Typ verändern:

type SomeType struct { 
    lst *list.LinkedList 
} 
+0

xD OMG .. Danke - so einfach ... – REALFREE

+1

@REALFREE "Effective Go" [liefert eine Antwort] (http://golang.org/doc/effective_go.html# Paketnamen). Bitte lesen Sie dieses Dokument, bevor Sie sich ernsthaft mit Go beschäftigen. – kostix

+0

@kostix gut thx Ich überflog es, aber vielleicht habe ich diesen Teil – REALFREE

Verwandte Themen