英文:
Invalid receiver type []T ([]T is an unnamed type) workaround?
问题
我想在[]T
上定义一个方法,其中T
是我定义的类型。
看起来我必须定义一个新类型来做到这一点,但这会阻止我在这个新类型上使用所有内置的切片函数(如len
)。
在Go语言中,是不是只需要创建普通函数而不是方法来实现这个功能?(有点像append()
可以是一个方法,但实际上并不是这样吗?)
英文:
I would like to define a method on []T
, where T
is a type I defined.
It looks like i have to define a new type to do this, but that stops me from using all the builtin functions for slices on this new type (such as len
).
Is the go way of doing this to just make ordinary functions, rather than methods? (Kinda like how append()
could be a method, but isn't?)
答案1
得分: 24
你可以定义一个切片类型:
type MySliceType []SomeType
- 你仍然可以在
MySliceType
的值上使用 append 和切片操作。 - 你可以在
MySliceType
上定义方法。
但是,你不能对 []SomeType
的方法进行猴子补丁。
英文:
You can define a slice type:
type MySliceType []SomeType
- You can still use append and slicing operations on values of
MySliceType
. - You can define methods on
MySliceType
.
You can't, however, monkeypatch []SomeType
's methods.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论