2013-01-04 34 views
38

私はgo langで別のファイルから関数を呼びたいと思っています。 TEST1 TEST2からでデモを呼び出す方法 test1.gogo言語で別のファイルから関数を呼び出す方法は?

package main 

func main() { 
    demo() 
} 

test2.go

package main 

import "fmt" 

func main() { 
} 

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

+0

あなたは '行くfmt'とはどういう意味ですかを入れて?端末のように、または何?彼は何に気をつけているのですか? –

答えて

39

お客様のパッケージにはmainを複数含めることはできません。

さらに一般的には、パッケージ内に特定の名前の関数を複数持つことはできません。

maintest2.goに削除し、アプリケーションをコンパイルします。 demo関数はtest1.goから表示されます。

+0

test2.goで 'main'を削除してビルドして実行することはできますが、' go run test1.go'を使ってtest1.goを実行できませんでした。どうして ? –

+49

'go run test1.go test2.go' –

+0

ありがとうdystro!私は "fmt"の使用を知らなかった。 –

9

デフォルトでGo Langは、上記のファイルのみをビルド/実行します。すべてのファイルをリンクするには、実行中にすべてのファイルの名前を指定する必要があります。

を実行して、二つのコマンド以下のいずれか:あなたがそれらを構築したい場合は

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

あなたは、同様のことを行う必要があります。

0

私は同じことを探していました。 "あなたの質問に答えるにはtest2のデモをtest1から呼び出すには?"、ここで私がやった方法です。 go run test1.goコマンドでこのコードを実行してください。 current_folderフォルダのtest1.goに変更します。

test1.go

package main 

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

func main() { 
    L.Demo() 
} 

のlib \ test2.go

サブフォルダ内のファイルtest2.go lib

package anyname 

import "fmt" 

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

これはgo1.9.2 windows/amd64で行われました – Zelenko

関連する問題