2013-05-26 4 views
9

私は新しいですが(プログラミングではありません)、言語は大好きですが、アプリケーションで内部ライブラリを作成する方法を完全に理解するのに少し問題がありますパッケージを通して。参考までに、外部パッケージを取得してからそれらをインポート/使用するのは問題ありません。アプリケーション内のローカルライブラリとファイルのインポート

その後、私はa.goかなり大きなことを始める実現ので、私は2つの部分

/home/me/A/a.go (package main) 
/home/me/A/b.go (package main) 

どのように午前中にそれを切るのは、私がアプリケーションAに

/home/me/A/a.go (package main) 

を作ってるんだとしましょう私はその機能を利用できるようにa.goからb.goをインポート/インクルードするはずですか?

質問の続きとして、私はたくさんのオブジェクトを操作していますので、私はそれらに独自のパッケージを与え、公開/エクスポートされたAPIの機能をカプセル化すればもっと良くなると思います。それ、どうやったら出来るの ?

私は./lib/o.go(パッケージO)とimport lib/oを作成しようとしましたが、私は私が私のenvにはGOPATHを持っていませんが、私はexport GOPATH=$GOPATH:/home/me/Aを試み、それが結果を変えなかった

./a.go:6: imported and not used: "o" 
./a.go:43: undefined: o 

のようなエラーを取得しておきます。

私は「レイアウトを行く」の記事を読むことを試みたが、それは一度に少しも圧倒的な感じ、私は本当に私は

を作成しようとしていますその1つの「小さな」ステップのシンプルな説明が大好きですありがとう!

GOPATH/srcに/私/ A/a.go:

package main 

func main() { 
     test() 
} 

GOPATH/srcに/私/ A/test.go:

package main 

import "fmt" 

func test() { 
     fmt.Println("test func !") 
} 

Execの:

$ go run a.go 
# command-line-arguments 
./a.go:4: undefined: test 

編集:ここで私の答えを得ました:https://groups.google.com/forum/?fromgroups#!topic/golang-nuts/qysy2bM_o1I

E実行中のすべてのファイルを一覧表示(go run a.go test.go)するか、go buildを使用して、実行可能な実行可能ファイルを実行します。

+3

両方のファイルが同じディレクトリにある場合、それらは1つのパッケージを形成します。同じパッケージの異なるファイルで宣言されたシンボルを取得するためのインポート文は必要ありません。 – fuz

+0

@FUZxxl:私の質問の最後に追加した裸の例を見ることができますか?私はそれを働かせるように見えることができない、私は何かをそうしているので、明らかに間違って私を乗り越える。お返事ありがとうございます – user933740

+0

自分自身で回答しましたが、ここで私の答えを得ました:https://groups.google.com/forum/?fromgroups#!topic/golang-nuts/qysy2bM_o1I goで実行中のすべてのファイルをリストします( 'go a.go test。 go)を実行するか、 'go build'を使用して、実行可能な実行可能ファイルを実行します。 – user933740

答えて

1

必要なディレクトリレイアウトに従わずに、Goビルドシステムを使用しようとしています。あなたはthis documentを読んで多くの利益を得ます。要するに

、これらは、WRT GOツール、ショーストッパーです:

  • あなたは、有効なを持っているGOPATH

  • にインポートパス「の例/ fooで

    パッケージファイルをエクスポートしなければなりません"$GOPATH/src/example/fooディレクトリにあるでなければなりません。

詳細については、上記のリンク先の記事を参照してください。

+1

私はそこの文書に従っており、ライブラリ 'oをアプリケーション' aから 'GOPATH/src/a/a.go'と' GOPATH/src/o/o.go'というパスでロードすることができます。ありがとう!しかし、私は同じパッケージのファイルをどのように "インクルード"できるのか分かりません。例えば、 'GOPATH/src/a/b.go'にあるファイルbからどのようにインクルードするのですか?これはライブラリではなく、複数のファイルでコードが分離されているだけです。リンクでは、ストリークパッケージに2つのファイルがありますが、 'streak.go'はどのように' oauth.go'をインクルードして使用しますか? – user933740

+0

上記の情報を参照してください。 – fuz

+8

上記の情報が、a.goと同じディレクトリにあるファイルの構造体の使用に関する質問にどのように答えているのか分かりません – ryanbillingsley

関連する問題