質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
Go

Go(golang)は、Googleで開発されたオープンソースのプログラミング言語です。

import

自身のプラットフォーム・プログラム・データセットに対して、外部ソースを取り込むプロセスをimportと呼びます。

リファクタリング

リファクタリングとはコードの本体を再構築するための手法であり、外見を変更せずに内部構造を変更/改善させることを指します。

Q&A

解決済

4回答

12770閲覧

自作のパッケージをmain.goにimportする方法を教えてください

jpskgc

総合スコア19

Go

Go(golang)は、Googleで開発されたオープンソースのプログラミング言語です。

import

自身のプラットフォーム・プログラム・データセットに対して、外部ソースを取り込むプロセスをimportと呼びます。

リファクタリング

リファクタリングとはコードの本体を再構築するための手法であり、外見を変更せずに内部構造を変更/改善させることを指します。

1グッド

1クリップ

投稿2019/08/21 07:45

前提・実現したいこと

golangでサーバーサイドを作成していました。
main.goに全てのロジックを書いていたのですが、リファクタリング目的で分割することにしました。
新たにpackage controllerを作成して、main.goにimportしようとしたのですがうまくいきませんでした。

発生している問題・エラーメッセージ

package controllermain.goにimportしても以下のエラーが出ます。

undefined: controller

該当のソースコード

フォルダ構成

article ├ client ├ api │ ├ main.go │ └ contoroller │ └ contoroller.go ├ nginx └ docker-compose.yml

main.go

go

1package main 2 3import ( 4//省略 5 6//↓を書いてvscodeで保存すると自動的に消える 7"./contoroller" 8) 9 10//省略 11 12 controller := controller.controller{} 13 14 api := router.Group("/api") 15 { 16 api.GET("/articles", func(c *gin.Context) { 17 controller.getArticleController(c, db) 18 }) 19 } 20 21 router.Run(":2345") 22}

contoroller.go

go

1package controller 2 3import ( 4//省略 5) 6 7func getArticleController(c *gin.Context, db *sql.DB) { 8//省略 9} 10 11 12

補足情報(FW/ツールのバージョンなど)

・client: react/axios ・api: golang/gin ・web-server: nginx ・db: mysql ・container: docker ・ci-tool: travis ・deploy: aws elastic beanstalk

以上、お手数ですがご教授いただけると幸いです。よろしくお願いいたします。

HugAllMyF0128👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

$GOPATH/srcがルートとなるようです。
ディレクトリ構造を確認ください。

投稿2019/08/21 09:13

meg_

総合スコア10577

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

$GOPATH/src/article/api/contorollerとした場合

go

1package main 2 3import( 4 "article/api/contoroller" 5)

でインポートできそうな気がします

投稿2019/08/21 09:09

teikoku-penguin

総合スコア314

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

articleフォルダにて

shell

1> go mod init article

としておけば、main.goから

go

1import( 2 "article/api/contoroller" 3)

としてインポート出来ますよ!

注意: GOPATH配下の場合GO111MODULE=onという環境変数設定が必要(go1.13以降は不要になる予定)

投稿2019/08/21 14:15

編集2019/08/21 14:17
nobonobo

総合スコア3367

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

自己解決

$GOPATH/src/github.com/[user]/articleにarticleをコピーしたところ
"github.com/jpskgc/article/api/controller"でimportできました
皆さま回答ありがとうございました

投稿2019/08/22 08:37

jpskgc

総合スコア19

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問