为了账号安全,请及时绑定邮箱和手机立即绑定

接收器类型无效 - 可以与 myType 结构一起使用吗?

接收器类型无效 - 可以与 myType 结构一起使用吗?

德玛西亚99 2022-06-06 15:11:14
我只是在尝试不同的东西来学习去理解它的工作结构。目前正在玩切片和自定义类型。我有以下代码可以正常工作并且符合预期。package imgsliceimport (    "fmt"    "image")type imageData struct {    position      int         // Image Number    image         *image.RGBA // Image Store    height        int         // Height In Pixels    width         int         // Width In Pixels}func init() {    fmt.Println("Starting")    lbl := &[]imageData{}    println(lbl)    InitImage(lbl, 3)    fmt.Printf("%#v\n", lbl)}// Initalise the imageData arrrayfunc InitImage(l *[]imageData, images int) {    var i int    var newRecord imageData    for i = 0; i < images; i++ {        newRecord = imageData{position: i}        *l = append(*l, newRecord)    }    return}我正在尝试重新编写 InitImage 函数以作为一种方法工作(我认为这是正确的术语)。但我得到了错误:无效的接收器类型 *[]imageData([]imageData 不是定义的类型)(编辑:错误func (l *[]imageData) InitImageNew(images int) {在线)我想这样做的唯一原因是a)学习看看它是否可以完成和b)在风格上,我认为我更喜欢将切片作为额外的参数。func (l *[]imageData) InitImageNew(images int) {    var i int    var newRecord imageData    for i = 0; i < images; i++ {        newRecord = imageData{position: i}        *l = append(*l, newRecord)    }    return}看这个答案:函数声明语法:函数名前括号中的东西似乎应该是可能的-但是这个答案似乎说这是不可能的:Golang monkey patching。是否可以重写这个所以我可以做lbl := &[]imageData{}lbl.InitImageNew(4)
查看完整描述

1 回答

?
皈依舞

TA贡献1851条经验 获得超3个赞

您只能在命名类型(或指向命名类型的指针)上定义方法。[]Type复合型。您可以通过定义它使其成为命名类型:

type TypeSlice []Type

然后在上面定义方法。

这在有关 types 的规范部分中进行了介绍。


查看完整回答
反对 回复 2022-06-06
  • 1 回答
  • 0 关注
  • 114 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号