2

私の問題

問題が些細なものである場合はお詫び申し上げます。私は golang にかなり慣れていないため、インポートのメカニズムを理解したいと考えています。私は OSX を使用しており、単純な go プログラムはコンパイルしてうまく動作します。

swaggerエディター自動コードジェネレーターを使用してgolangサーバーを生成しました。コードを のディレクトリに解凍したところ、結果のサーバーには次のファイルが含まれています。/tmp/main.go

package main

import (
        // WARNING!
        // Change this to a fully-qualified import path
        // once you place this file into your project.
        // For example,
        //
        //    sw "github.com/myname/myrepo/go"
        //
        sw "./go"
        "log"
        "net/http"
)

func main() {
        log.Printf("Server started")

        router := sw.NewRouter()

        log.Fatal(http.ListenAndServe(":8080", router))
}

コメントから予想されるようgo build main.goに、次のエラーで失敗します。

main.go:11:2:
go/default.go:3:1: expected 'IDENT', found 'import'

フォレンジック

プロジェクトのディレクトリ ツリー

/tmp/goserver/go-server-server
├── LICENSE
├── api
│   └── swagger.yaml
├── go
│   ├── README.md
│   ├── app.yaml
│   ├── default.go
│   ├── logger.go
│   └── routers.go
└── main.go

go/default.go

package

import (
    "net/http"
)

type Default struct {

}

func QuestionimagePost(w http.ResponseWriter, r *http.Request) {
        w.Header().Set("Content-Type", "application/json; charset=UTF-8")
        w.WriteHeader(http.StatusOK)
}

私は何を試しましたか

  • go パッケージについて読む
  • いくつかの github プロジェクトでパッケージ/インポートの関係を理解し​​ようとしました
  • ディレクトリ ツリーを に移動し$GOPATH/src、インポートを に変更しましたsw "sw/go-server-server/go"main.go:13:2: go/default.go:3:1: expected 'IDENT', found 'import'

インポートの完全修飾インポート パスとはsw何ですか? また、それはどういう意味ですか?

4

2 に答える 2

1

いくつかのパスを としてエクスポートする必要がありGOPATHます$HOME/goexport GOPATH=$HOME/go.

$GOPATH/src/go-server-server次に、プロジェクトを( )に入れることができます。すべてを正しく読んでいれば$HOME/go/src/go-server-server、完全修飾パスになります。go-server-server/go

于 2016-09-23T18:54:38.793 に答える