我有一个REST API,对于每个响应,我需要将我的核心模型映射到我将在REST服务中公开的模型。
我想将模型命名为相同,例如:
def foo
puts("foo")
end
def bar
puts("bar")
end
foo
bar
我希望在我的API中公开用户结构:
package main
type User struct {
Name string
Password string
}
如何组织我的代码以便我不会发生名称冲突,因为当我尝试这样做时,我收到错误:
以前的宣言
如果我将API结构的包更改为:
type User struct {
Name string
}
我收到了另一个错误
无法加载包:package ...找到包main和api
如果我能够分离模型,我将如何参考其他包的模型:
package api
type User struct { ... }
所以我想把main.User作为参数并返回api.User。
答案 0 :(得分:1)
正如其他人所说,你想要做的事情根本不可能在同一个包装下,并且即使在不同的包装下也可能引起混淆。如果你想继续做后者,你应该有一个名为api
的文件夹,你可以将user.go
放在其中。然后,示例文件夹结构如下所示:
main.go // package main
user.go // package main
/api
user.go // package api
为了它的价值,当我设计API时,我通常会在包User
中包含结构model
,在包{UserResponse
中包含结构handler
{1}}。对于获取数据的端点,它们也具有与它们相关联的UserRequest
结构。这清楚地说明了他们的目的是什么,无论他们在哪个包中被引用。