2013-01-04 13 views
38

Voglio chiamare la funzione da un altro file in go lang, qualcuno può aiutarti? test1.goCome chiamare la funzione da un altro file in go language?

package main 

func main() { 
    demo() 
} 

test2.go

package main 

import "fmt" 

func main() { 
} 

func demo() { 
    fmt.Println("HI") 
} 

Come chiamare demo in test2 da test1?

+0

Che cosa si intende per 'andare fmt' ? Come nel terminale o cosa? Come dimostra che gli importa qualcosa? –

risposta

39

Nel pacchetto non è possibile avere più di uno main.

Più in generale, non è possibile avere più di una funzione con un nome specifico in un pacchetto.

Rimuovere main in test2.go e compilare l'applicazione. La funzione demo sarà visibile da test1.go.

+0

Posso creare ed eseguire dopo aver rimosso 'main' in test2.go ma non è riuscito a eseguire test1.go usando' go run test1.go' ancora. Perché ? –

+49

'go run test1.go test2.go' –

+0

grazie dystro! Non sapevo che "go fmt" usasse. –

9

Go Lang di default crea/esegue solo il file indicato. Per collegare tutti i file è necessario specificare il nome di tutti i file durante l'esecuzione.

eseguire uno dei due comandi di seguito:

$go run test1.go test2.go. //order of file doesn't matter 
$go run *.go 

si dovrebbe fare cosa simile, se si vuole costruire loro.

0

Stavo cercando la stessa cosa. Per rispondere alla tua domanda "Come chiamare demo in test2 da test1?", ecco come l'ho fatto. Esegui questo codice con il comando go run test1.go. Modificare la cartella current_ nella cartella in cui test1.go è.

test1.go

package main 

import (
    L "../current_folder/lib" 
) 

func main() { 
    L.Demo() 
} 

lib \ test2.go

mettere test2.go file nella sottocartella lib

package anyname 

import "fmt" 

// This func must be Exported, Capitalized, and comment added. 
func Demo() { 
    fmt.Println("HI") 
} 
+0

Questo è stato fatto con go1.9.2 windows/amd64 – Zelenko

Problemi correlati