質問するログイン新規登録

回答編集履歴

2

動作サンプルであることを明記

2021/02/26 12:07

投稿

d_tutuz
d_tutuz

スコア730

answer CHANGED
@@ -26,8 +26,10 @@
26
26
 
27
27
  ## 具体例
28
28
 
29
- 天下り的な書き方になってしまいますが、`go.mod` `module` ディレクティブや `replace` ディレクティブは以下のようになります。
29
+ 天下り的な書き方になってしまいますが、マルチモジュール構成リポジトリ例を記載します。
30
30
 
31
+ `go.mod` の `module` ディレクティブや `replace` ディレクティブは以下のようになります。
32
+
31
33
  - ディレクトリ構成
32
34
 
33
35
  `teratail` ディレクトリがカレントディレクトリと仮定します。

1

コメントを頂いていたため、具体例を追加

2021/02/26 12:07

投稿

d_tutuz
d_tutuz

スコア730

answer CHANGED
@@ -18,4 +18,107 @@
18
18
  replace local.packeges/model => ../model
19
19
  ```
20
20
 
21
- `model` ディレクトリや直下の `go.mod` についても同様です。
21
+ `model` ディレクトリや直下の `go.mod` についても同様です。
22
+
23
+ ---
24
+
25
+ __詳細を追記しました。2021/02/26 20:16__
26
+
27
+ ## 具体例
28
+
29
+ 天下り的な書き方になってしまいますが、`go.mod` の `module` ディレクティブや `replace` ディレクティブは以下のようになります。
30
+
31
+ - ディレクトリ構成
32
+
33
+ `teratail` ディレクトリがカレントディレクトリと仮定します。
34
+
35
+ ```
36
+ .
37
+ ├── db
38
+ │   ├── db.go
39
+ │   └── go.mod
40
+ ├── go.mod
41
+ ├── handler
42
+ │   └── main.go
43
+ └── model
44
+ ├── go.mod
45
+ └── model.go
46
+ ```
47
+
48
+ - go.mod (ディレクトリ直下)
49
+
50
+ ```
51
+ module github.com/d-tsuji/go-sandbox/teratail
52
+
53
+ go 1.14
54
+
55
+ require github.com/d-tsuji/go-sandbox/teratail/db v0.0.0-00010101000000-000000000000
56
+
57
+ replace (
58
+ github.com/d-tsuji/go-sandbox/teratail/db => ./db
59
+ github.com/d-tsuji/go-sandbox/teratail/model => ./model
60
+ )
61
+ ```
62
+
63
+ - model/go.mod
64
+
65
+ ```
66
+ module "github.com/d-tsuji/go-sandbox/teratail/model"
67
+
68
+ go 1.14
69
+ ```
70
+
71
+ - model/model.go
72
+
73
+ ```go
74
+ package model
75
+
76
+ type Person struct {
77
+ Name string
78
+ }
79
+ ```
80
+
81
+ - db/go.mod
82
+
83
+ ```
84
+ module "github.com/d-tsuji/go-sandbox/teratail/db"
85
+
86
+ go 1.14
87
+
88
+ require (
89
+ github.com/d-tsuji/go-sandbox/teratail/model v0.0.0-00010101000000-000000000000
90
+ )
91
+
92
+ replace github.com/d-tsuji/go-sandbox/teratail/model => ../model
93
+ ```
94
+
95
+ - db/db.go
96
+
97
+ ```go
98
+ package db
99
+
100
+ import (
101
+ "fmt"
102
+
103
+ "github.com/d-tsuji/go-sandbox/teratail/model"
104
+ )
105
+
106
+ func FetchHogeHoge() {
107
+ m := model.Person{Name: "Gopher"}
108
+ fmt.Printf("%+v\n", m)
109
+ }
110
+ ```
111
+
112
+ - handler/main.go
113
+
114
+ ```go
115
+ package main
116
+
117
+ import (
118
+ "github.com/d-tsuji/go-sandbox/teratail/db"
119
+ )
120
+
121
+ func main() {
122
+ db.FetchHogeHoge()
123
+ }
124
+ ```