7

ディレクトリツリーは次のとおりです。

+/project  
  +---/bin  
  +---/pkg  
  +---/src  
    +---/client_test  
      +---client_test.go  
    +---main.go  

main.goで:

package main
import ("client_test")
func main() {
  client_test.Send()
}

client_test.go:

package client_test
func Send() {
}

エラー:

src/main.go|8| imported and not used: "client_test"
src/main.go|32| undefined: client_test

golangでカスタムパッケージを使用する方法を読みましたか?私はこの人と同じ解決策を持っていると思いますが、この問題を解決する方法がわかりません。助けてください。

環境に移動:

GOARCH="amd64"  
GOBIN="/usr/local/go/bin"  
GOCHAR="6"  
GOEXE=""  
GOGCCFLAGS="-g -O2 -fPIC -m64 -pthread -fno-common"  
GOHOSTARCH="amd64"  
GOHOSTOS="darwin"  
GOOS="darwin"  
GOPATH="/Users/staff/projects/Minigame_Server" (that's exactly my working directory)  
GOROOT="/usr/local/go"  
GOTOOLDIR="/usr/local/go/pkg/tool/darwin_amd64"  
CGO_ENABLED="1"  
4

4 に答える 4

11

コマンド ゴー、テスト パッケージ。

... ファイル パターン「*_test.go」に一致する名前のファイル ... テスト関数、ベンチマーク関数、およびサンプル関数を含めることができます。

予約名は使用しないでください。たとえば、全体に置き換えclient_testますclienttest

于 2013-03-14T12:38:19.503 に答える
1

OK、最終的に自分の環境に問題があることがわかりました:

私はOS Xを使用しているので、.pkgファイルを使用してgoをインストールしました。GOROOTは「/usr/local/go」です

次に、GO のインストールに関する別の偽のチュートリアルを読み、~/.profile で GOROOT を定義する必要があると書かれているので、~/.profile 内に "GOROOT="/usr/local/go" を追加すると、すべてがうまくいきませんでした。

公式文書を注意深く読んだ後、私はこれを見つけました:

Go バイナリ ディストリビューションは、/usr/local/go (または Windows では c:\Go) にインストールされることを想定していますが、別の場所にインストールすることも可能です。これを行う場合、Go ツールを使用するときに GOROOT 環境変数をそのディレクトリに設定する必要があります。

たとえば、Go to your home directory をインストールした場合は、次のコマンドを $HOME/.profile に追加する必要があります。

export GOROOT=$HOME/go export PATH=$PATH:$GOROOT/bin

しかし問題は、.pkg のインストール後に ~/.profile に GOROOT を追加するとどうなるかについて言及されておらず、これを行うことができないとも言われていませんでした。

これが私の ~/.profile の外観です (修正中):

export GOPATH=$HOME/projects/ export PATH=$PATH:$GOPATH/bin

ところで: ワークスペースの下に /project フォルダーを作成する必要はありません。http://golang.org/doc/code.html#tmp_2によると、次のことを行う必要があるとは言いませんでした:

ワークスペース ディレクトリ ツリーは次のようになります。

bin/
    hello              # command executable
pkg/
    linux_amd64/ 
        example/
            newmath.a  # package object
src/
    example/
        hello/
            hello.go   # command source
        newmath/
            sqrt.go    # package source
于 2013-03-14T12:54:29.900 に答える
0

$GOPATH が「/Users/staff/projects/Minigame_Server」の場合、「プロジェクト」の絶対パスは「/Users/staff/projects/Minigame_Server/src/project」になります。

インポートは になりますimport "project/src/client_test"

または、「プロジェクト」の下に Go 関連のサブディレクトリ「/pkg」と「/bin」がある場合、GOPATH を「/Users/staff/projects/Minigame_Server/project」に設定します。

そして、あなたはすることができimport "client_test"ます。基本的な考え方は、Go がインポート文字列を $GOPATH/src/ に追加することです。

(ややあいまいですが、同意します) ドキュメントは次のとおりです: http://golang.org/doc/code.html#tmp_2。私の推測では、/pkg、/bin、および /src サブディレクトリを作成した理由はそれを読んだことですが、キャッチは GOPATH があるべき場所であり、インポートを探すときに Go によって自動的に追加された暗黙的なサブレベルです。 (/src は自動的に追加されます)、インポート文字列はそのままです。

于 2013-03-14T12:21:09.423 に答える