2014-01-18 9 views
10

の主からの輸入VARS/consts私は、次のファイルと$GOPATH/dalu/myprojectで行くプロジェクトを持っている:ゴー:サブパッケージ

main.go

package main 

import "dalu/myproject/subpackage" 
var GV string = "World" 

func main() { 
    subpackage.Hello() 
} 

subpackage/subpackage.go

package subpackage 

import (
    "fmt" 
    "dalu/myproject" 
) 

func Hello() { 
    //? fmt.Println("Hello"+GV) 
} 

ボーナス(もし可能ならば): 私はもっと多くのサブパッケージで同様のことを試しました。メインのサブパッケージをインポートしようとすると、最初に言及したサブパッケージをインポートする別のサブパッケージをインポートします。 "インポートサイクルは許可されません"

+0

の両方でそれをインポートするあなたがmyproject.GV – fuz

答えて

22

コンパイラC++とは異なり、ここでは前方宣言のトリックはありません。

あなたは状態がある場合:それはあなたが彼らがCをパッケージ化し、それらの間で共有何でも移動する必要がmeasns A imports B AND B imports A

をし、実行します。 A imports B, C AND B imports C

を、誰もが幸せです!

またはこの例では、dalu/myproject/gv/gv.goというファイルを追加し、このファイルにGVを定義します。その後mainsubpackage

+4

偉大な答えをしようとしました:) –

+0

なぜ –

+0

おかげで、それは質問に答える、良い先生をお願いします。ボーナスに関して、私はこのようなものを試しました:https://github.com/dalu/gobfw/tree/master/module/userここでroutes/routes.goのルートを定義し、ハンドラとインポートされたルートをuser.goにインポートしましたそれは私に循環依存メッセージを与えるだろう。私は明日より良い例をアップロードします –