go - 单一方法上的多个接收器
问题描述
一个函数可以有多个接收器吗?换句话说,一个函数可以属于两个或多个struct
s?
说我有
type Struct1 struct {
foo.Client
}
func CreateClient() struct1 {
return struct1{
ClientID: cId,
// ...
}
}
func (s *Struct1) MyFunc( // ... ) {}
但我也希望能够MyFunc
与另一个struct
(不同的包)关联:
type Struct2 struct {
lgr log.logger
}
func NewStruct2 (l *log.logger) (*Struct2, err) {
return &Struct2{mylog: *l}, nil
}
所以我真正想要的是:
func (s1 *Struct1, s2 *Struct2) MyFunc( // ... ) {}
解决方案
“是否可以在一个功能上拥有多个接收器?” - 这不可能。
https://golang.org/ref/spec#Method_declarations
接收者是通过方法名称前面的额外参数部分指定的。该参数部分必须声明一个非可变参数,即接收者。
推荐阅读
- google-analytics - 访问谷歌分析中的谷歌标签管理器字段值
- reactjs - custom-cra, (react-app-rewired) 如何覆盖路径
- javascript - React JS,无法将道具内的嵌套数组写入控制台
- django - Django + 原始 SQL 查询 - 如何在 sql 查询中的字段的空值之间进行权衡
- go - 使用 Go oauth2 包更新刷新令牌?
- python - itertools.combinations:在间隔内多次使用
- javascript - VSCode with flow,如何使自动导入工作
- excel - 跳过错误“该文档在上次打开时导致严重错误”
- c# - 使用 EF 6 访问数据库的方法?
- flutter - 缩放嵌套的 RichText 小部件以实现可访问性