2014-10-01 24 views
11

Hallo Im Newbie in Golang.Rufen Sie eine Funktion aus einem anderen Paket in Go

Ich habe zwei Dateien main.go die unter package main ist, und eine andere Datei mit einigen Funktionen im Paket namens Funktionen.

Meine Frage ist: Wie kann ich eine Funktion von package main aufrufen?

Datei 1: main.go (befindet sich in MyProj/main.go)

package main 

import "fmt" 
import "functions" // I dont have problem creating the reference here 

func main(){ 
    c:= functions.getValue() // <---- this is I want to do 
} 

File 2: functions.go (befindet sich in MyProj/Funktionen/functions.go)

package functions 

func getValue() string{ 
    return "Hello from this another package" 
} 

Vielen Dank für Ihre Hilfe.

+8

Sehr geehrte SO-User, bitte erklären Sie downvotes! Es hilft niemandem, wenn Sie keinen Kommentar hinterlassen, warum Sie das für eine schlechte Frage halten. – topskip

+5

Sie müssen Ihren Funktionsnamen mit einem Großbuchstaben ('GetValue()') beginnen, um ihn von außen aufzurufen. – topskip

Antwort

15

Sie importieren das Paket durch seine Importpfad, und verweisen alle seine exportierten Symbole (diese mit einem Großbuchstaben beginnen) durch den Paketnamen, etwa so:

import "MyProj/functions" 

functions.GetValue() 
+0

@topskip: danke, total übersprungen;) – JimB

+0

Danke! PS. Könnten Sie das Beispiel der Frage in die richtige Form bringen? –

2
  • Sie Präfix sollte Ihr Import in main.go mit: MyProj, denn das Verzeichnis, in dem sich der Code befindet, ist standardmäßig ein Paketname in Go, unabhängig davon, ob Sie es anrufen main oder nicht. Es wird als MyProj benannt.

  • package main bedeutet nur, dass diese Datei einen ausführbaren Befehl enthält, der func main() enthält. Dann können Sie diesen Code wie folgt ausführen: go run main.go. Weitere Informationen finden Sie unter here.

  • Sie sollten Ihre func getValue() in functions Paket func GetValue() umbenennen, da nur diese Art und Weise wird die func auf andere Pakete sichtbar sein. Weitere Informationen finden Sie unter here.

Datei 1: main.go (in MyProj/main.go befindet)

package main 

import (
    "fmt" 
    "MyProj/functions" 
) 

func main(){ 
    fmt.Println(functions.GetValue()) 
} 

File 2: functions.go (befindet sich in MyProj/Funktionen/functions.go)

package functions 

// `getValue` should be `GetValue` to be exposed to other packages. 
// It should start with a capital letter. 
func GetValue() string{ 
    return "Hello from this another package" 
} 
0

Export Funktion getValue von 1.en Zeichen von Funktionsnamen Hauptstadt machen, GetValue

Verwandte Themen