gpt4 book ai didi

struct - 在已经输入的结构上进行结构类型

转载 作者:IT王子 更新时间:2023-10-29 01:42:41 25 4
gpt4 key购买 nike

我在 package xyz 中有一个名为 Service 的结构,多个 api 包装器(Api1Api2)将用作基础。我希望使用该包的人为每个 API 调用方法,例如:xyz.Api1.MethodA(..)xyz.Api2.MethodB(..)

现在我正在做这样的事情

type struct api1 {
*Service
}

var Api1 *api1

func init() {
Api1 = &api1{
&Service{
...
}
}
}

func (a *api1) MethodA {
...
}

我不喜欢这个,因为它看起来像很多样板文件。我宁愿让 Api1 成为一个服务结构,但每个服务都有不同的方法,所以我认为这是不可能的,除非我可以type Service api1 {...}

是否有另一种方法可以使用户所需的调用成为 xyz.Api1.MethodA(..) 之类的东西,而不必为每个 api 创建新的结构类型,也不必这样做很多样板文件?

最佳答案

您可以创建两个新类型并让用户决定如何使用它们,而不是使用全局变量:

type API1Service struct {
*Service
api1Param1 int
// etc.
}

func NewAPI1Service(api1Param1 int) *API1Service { /* ... */ }

// methods on API1Service

type API2Service struct {
*Service
api2Param1 int
// etc.
}

func NewAPI2Service(api2Param1 int) *API2Service { /* ... */ }

// methods on API2Service

然后,您的用户可以做

api := xyz.NewAPI1Service(42)
api.MethodA()
// etc.

关于struct - 在已经输入的结构上进行结构类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30307595/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com