我只是在尝试不同的东西来学习去理解它的工作结构。目前正在玩切片和自定义类型。
我有以下代码可以正常工作并且符合预期。
package imgslice
import (
"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 arrray
func 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)
皈依舞
相关分类