2014-10-01 16 views
11

Witaj, jestem nowicjuszem w golangu.Wywołanie funkcji z innej paczki w Go

Mam dwa pliki main.go, który jest pod package main, i inny plik z niektórymi funkcjami w pakiecie o nazwie funkcje.

Moje pytanie brzmi: jak mogę wywołać funkcję z package main?

pliku 1: main.go (znajduje się w 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 
} 

pliku 2: functions.go (znajduje się w MyProj/funkcje/functions.go)

package functions 

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

Dziękuję bardzo za pomoc.

+8

Szanowni użytkownicy SO: proszę opisać downvotes! Nikomu to nie pomoże, jeśli nie zostawisz komentarza, dlaczego uważasz, że to złe pytanie. – topskip

+5

Musisz uruchomić swoją nazwę funkcji z nazwą kapitału ('GetValue()'), aby wywołać ją z zewnątrz. – topskip

Odpowiedz

15

importować pakunek swojej drodze importu i odwołać wszystkie swoje eksportowane symbole (te zaczynające wielką literą) poprzez nazwy pakietu, tak jak poniżej:

import "MyProj/functions" 

functions.GetValue() 
+0

@topskip: dzięki, całkowicie to pominięto;) – JimB

+0

Dzięki! PS. Czy możesz podać przykład pytania we właściwej formie? –

2
  • Należy prefiks twój import w main.go z: MyProj, ponieważ katalog, w którym znajduje się kod, jest domyślnie nazwą pakietu w Go, czy nazywasz go main, czy też nie. Zostanie nazwany jako MyProj.

  • package main oznacza, że ​​ten plik ma wykonywalne polecenie, które zawiera func main(). Następnie możesz uruchomić ten kod jako: go run main.go. Aby uzyskać więcej informacji, patrz here.

  • Należy zmienić nazwę pakietu func getValue() w functions do func GetValue(), bo tylko ten sposób func będą widoczne dla innych pakietów. Aby uzyskać więcej informacji, patrz here.

pliku 1: main.go (znajduje się w MyProj/main.go)

package main 

import (
    "fmt" 
    "MyProj/functions" 
) 

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

pliku 2: functions.go (znajduje się w MyProj/funkcje/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 funkcja getValue poprzez 1st charakter nazwy funkcji stolicy, getValue

Powiązane problemy