在 Golang 中是否可能扩展结构体(类似于其他语言中的扩展类,并将其与旧函数一起使用)?
我有一个类型为 SetSlackServiceOptions 的 https://github.com/xanzy/go-gitlab/blob/master/services.go#L287 。
我有一个类型为 SetSlackServiceOptions 的 https://github.com/xanzy/go-gitlab/blob/master/services.go#L287 。
package gitlab
// SetSlackServiceOptions struct
type SetSlackServiceOptions struct {
WebHook *string `url:"webhook,omitempty" json:"webhook,omitempty" `
Username *string `url:"username,omitempty" json:"username,omitempty" `
Channel *string `url:"channel,omitempty" json:"channel,omitempty"`
}
我希望在我的自定义包中为类型添加一些字段。我能不能这样做,以便我可以使用这个我的新类型调用函数SetSlackService?
package gitlab
func (s *ServicesService) SetSlackService(pid interface{}, opt *SetSlackServiceOptions, options ...OptionFunc) (*Response, error) {
project, err := parseID(pid)
if err != nil {
return nil, err
}
u := fmt.Sprintf("projects/%s/services/slack", url.QueryEscape(project))
req, err := s.client.NewRequest("PUT", u, opt, options)
if err != nil {
return nil, err
}
return s.client.Do(req, nil)
}
https://github.com/xanzy/go-gitlab/blob/266c87ba209d842f6c190920a55db959e5b13971/services.go#L297
编辑:
我想将自己的结构传递到上面的函数中。这是gitlab包中的函数,我想扩展http请求。