2014-10-01 19 views
11

Hi Im newbie in golang.Chiama una funzione da un altro pacchetto in Go

Ho due file main.go che è inferiore a package main e un altro file con alcune funzioni nel pacchetto chiamato funzioni.

La mia domanda è: come posso chiamare una funzione da package main?

File 1: main.go (nella 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 (situato in MyProj/funzioni/functions.go)

package functions 

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

Grazie mille per il vostro aiuto.

+8

Cari utenti SO: si prega di spiegare i downvotes! Non aiuta nessuno se non lasci un commento _perché_ pensi che questa sia una brutta domanda. – topskip

+5

È necessario iniziare il nome della funzione con un nome maiuscolo ('GetValue()') per chiamarlo dall'esterno. – topskip

risposta

15

si importa il pacchetto dal suo percorso di importazione e di riferimento tutti i suoi simboli esportati (quelli che iniziano con una lettera maiuscola) attraverso il nome del pacchetto, in questo modo:

import "MyProj/functions" 

functions.GetValue() 
+0

@topskip: grazie, totalmente ignorato;) – JimB

+0

Grazie! PS. Potresti includere l'esempio della domanda nella sua forma corretta? –

2
  • Si dovrebbe prefisso la tua importazione in main.go con: MyProj, perché, la directory in cui si trova il codice è un nome di pacchetto per impostazione predefinita in Vai se lo chiami o meno main. Sarà denominato come MyProj.

  • package main indica semplicemente che questo file ha un comando eseguibile che contiene func main(). Quindi, è possibile eseguire questo codice come: go run main.go. Vedi here per maggiori informazioni.

  • Si dovrebbe rinominare il pacchetto func getValue() in functions-func GetValue(), perché solo in questo modo il func sarà visibile ad altri pacchetti. Vedi here per maggiori informazioni.

File 1: main.go (nella MyProj/main.go)

package main 

import (
    "fmt" 
    "MyProj/functions" 
) 

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

File 2: functions.go (situato in MyProj/funzioni/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

funzione Esporta getValue rendendo primo carattere del nome della funzione di capitale, GetValue

Problemi correlati