いつもご助言いただきありがとうございます。
今回は、機能別に自作したパッケージが各々認識されないという問題があったため、Ginというよりは、Goモジュールの基本的な事について質問させていただきます。
ぜひともよろしくお願いいたします。
実現したいこと
Ginの環境を下記Treeのように機能別に分けて構築しようとしました。
ルーティングは「router/router.go」として、リクエストを受け取る機能は「controller/piyo.go」として定義しました。
(Docker関連のファイルはここでは省略です。)
tree
1/hoge_project 2├── controller 3│ └── piyo.go 4├── go.mod 5├── go.sum 6├── main.go 7└── router 8 └── router.go
◆GoコンテナのGo環境変数状況(一部)
env
1GO111MODULE="" 2GOMODCACHE="/go/pkg/mod" 3GOPATH="/go" 4GOROOT="/usr/local/go" 5GOVERSION="go1.18.3"
どのようにgo mod init
したか
◆「hoge_project」を基準にgo mod init
を実行し、Ginを含めたパッケージのインストールを試しました。
go mod init hoge_project go mod tidy
発生している問題・エラーメッセージ
Goのコンテナに入り込み、go run main.go
でGinを起動使用としたところ下記のエラーが出ました。
root@***********:/go/src# go run main.go # gin hoge_project/router router/router.go:14:20: undefined: controller
さらに、go mod init
したはずが、VSCodeでrouter/router.goのソースで、パッケージが認識されないメッセージと赤いマークが表示されました。
該当のソースコード
◆ main.go
go
1package main 2 3import ( 4 "hoge_project/router" # <-認識されない 5 "github.com/gin-gonic/gin" 6) 7 8func main() { 9 engine := gin.Default() 10 router.LoadRouter(engine) 11 if err := engine.Run(":8080"); err != nil { 12 panic(err) 13 } 14}
◆ router/router.go
go
1package router 2 3import ( 4 "github.com/gin-gonic/gin" 5 "hoge_project/controlller" # <-認識されない 6) 7 v1 := engine.Group("/v1") 8 { 9 v1.GET("/ping", func(c *gin.Context) { 10 c.JSON(200, gin.H{"message": "OK"}) 11 }) 12 v1.GET("/piyo", controller.Piyo) # <-認識されない 13 } 14
◆ controller/piyo.go
go
1package controller 2 3import "github.com/gin-gonic/gin" 4 5func Piyo(c *gin.Context) { 6 c.JSON(200, gin.H{"hello": "world"}) 7}
補足情報(FW/ツールのバージョンなど)
実行環境 = Windows版VirtualBox6.1で、UbuntuServer 20.04.4 LTS
Docker = Version:20.10.17
docker-compose = Version: 2.5.1
Goのコンテナ = golang:latest
=> Version: 1.18.3
Gin = Version:1.8.1
エディタ = VSCode(Go関連の拡張機能をインストール済)
以上よろしくお願いいたします。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。