回答編集履歴

2

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

2021/02/26 12:07

投稿

d_tutuz
d_tutuz

スコア730

test CHANGED
@@ -54,7 +54,11 @@
54
54
 
55
55
 
56
56
 
57
+ 天下り的な書き方になってしまいますが、マルチモジュール構成のリポジトリ例を記載します。
58
+
59
+
60
+
57
- 天下り的な書き方になってしまいますが、`go.mod` の `module` ディレクティブや `replace` ディレクティブは以下のようになります。
61
+ `go.mod` の `module` ディレクティブや `replace` ディレクティブは以下のようになります。
58
62
 
59
63
 
60
64
 

1

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

2021/02/26 12:07

投稿

d_tutuz
d_tutuz

スコア730

test CHANGED
@@ -39,3 +39,209 @@
39
39
 
40
40
 
41
41
  `model` ディレクトリや直下の `go.mod` についても同様です。
42
+
43
+
44
+
45
+ ---
46
+
47
+
48
+
49
+ __詳細を追記しました。2021/02/26 20:16__
50
+
51
+
52
+
53
+ ## 具体例
54
+
55
+
56
+
57
+ 天下り的な書き方になってしまいますが、`go.mod` の `module` ディレクティブや `replace` ディレクティブは以下のようになります。
58
+
59
+
60
+
61
+ - ディレクトリ構成
62
+
63
+
64
+
65
+ `teratail` ディレクトリがカレントディレクトリと仮定します。
66
+
67
+
68
+
69
+ ```
70
+
71
+ .
72
+
73
+ ├── db
74
+
75
+ │   ├── db.go
76
+
77
+ │   └── go.mod
78
+
79
+ ├── go.mod
80
+
81
+ ├── handler
82
+
83
+ │   └── main.go
84
+
85
+ └── model
86
+
87
+ ├── go.mod
88
+
89
+ └── model.go
90
+
91
+ ```
92
+
93
+
94
+
95
+ - go.mod (ディレクトリ直下)
96
+
97
+
98
+
99
+ ```
100
+
101
+ module github.com/d-tsuji/go-sandbox/teratail
102
+
103
+
104
+
105
+ go 1.14
106
+
107
+
108
+
109
+ require github.com/d-tsuji/go-sandbox/teratail/db v0.0.0-00010101000000-000000000000
110
+
111
+
112
+
113
+ replace (
114
+
115
+ github.com/d-tsuji/go-sandbox/teratail/db => ./db
116
+
117
+ github.com/d-tsuji/go-sandbox/teratail/model => ./model
118
+
119
+ )
120
+
121
+ ```
122
+
123
+
124
+
125
+ - model/go.mod
126
+
127
+
128
+
129
+ ```
130
+
131
+ module "github.com/d-tsuji/go-sandbox/teratail/model"
132
+
133
+
134
+
135
+ go 1.14
136
+
137
+ ```
138
+
139
+
140
+
141
+ - model/model.go
142
+
143
+
144
+
145
+ ```go
146
+
147
+ package model
148
+
149
+
150
+
151
+ type Person struct {
152
+
153
+ Name string
154
+
155
+ }
156
+
157
+ ```
158
+
159
+
160
+
161
+ - db/go.mod
162
+
163
+
164
+
165
+ ```
166
+
167
+ module "github.com/d-tsuji/go-sandbox/teratail/db"
168
+
169
+
170
+
171
+ go 1.14
172
+
173
+
174
+
175
+ require (
176
+
177
+ github.com/d-tsuji/go-sandbox/teratail/model v0.0.0-00010101000000-000000000000
178
+
179
+ )
180
+
181
+
182
+
183
+ replace github.com/d-tsuji/go-sandbox/teratail/model => ../model
184
+
185
+ ```
186
+
187
+
188
+
189
+ - db/db.go
190
+
191
+
192
+
193
+ ```go
194
+
195
+ package db
196
+
197
+
198
+
199
+ import (
200
+
201
+ "fmt"
202
+
203
+
204
+
205
+ "github.com/d-tsuji/go-sandbox/teratail/model"
206
+
207
+ )
208
+
209
+
210
+
211
+ func FetchHogeHoge() {
212
+
213
+ m := model.Person{Name: "Gopher"}
214
+
215
+ fmt.Printf("%+v\n", m)
216
+
217
+ }
218
+
219
+ ```
220
+
221
+
222
+
223
+ - handler/main.go
224
+
225
+
226
+
227
+ ```go
228
+
229
+ package main
230
+
231
+
232
+
233
+ import (
234
+
235
+ "github.com/d-tsuji/go-sandbox/teratail/db"
236
+
237
+ )
238
+
239
+
240
+
241
+ func main() {
242
+
243
+ db.FetchHogeHoge()
244
+
245
+ }
246
+
247
+ ```