go - 实现切片的接口
问题描述
在玩 Go 时,我遇到了一个问题:是否可以实现切片的接口?我无法在任何地方找到答案。我尝试了以下但没有成功:
type t1 struct {
prop string
}
type i1 interface {
toString() string
}
//ok
func (o t1) toString() {
return o.prop
}
// ERROR invalid receiver []i1 (basic or unnamed type)compiler(InvalidRecv)
func (o []i1) toString() {
}
// ERROR invalid receiver []t1 (basic or unnamed type)compiler(InvalidRecv)
func (o []t1) toString() {
}
解决方案
您不能为切片定义方法。您可以从切片定义新类型,并为此定义一个方法:
type t1Slice []t1
func (o t1Slice) toString() {
}
然后你可以这样做:
var arr []t1
t1Slice(arr).toString()
推荐阅读
- c++ - 为什么在 int 之后使用星号 (*)?ptr = (int*) malloc (100 * sizeof(int));
- c# - 如何修复错误的格式时间?
- html - 如何在保持相同视觉外观的同时减少 CSS 文件中的行数(CSS 代码优化)
- json - 我如何仅在特定时间允许 aws IAM 权限
- python - 如何创建网格的新实例,用实体填充该网格并返回该网格
- date - 如何判断月份是否在两个日期之间?
- java - 如何有效地减少必须检查所有可能组合排列的项目集合?
- java - 按下按钮时尝试执行操作
- python - 即使我是一个 if 语句告诉不要,我的循环也会遇到负数
- python - 为新记录创建自定义唯一 ID 但有重复错误